2013-06-27 74 views
0

是否可以編寫通用Makefile,它可以獲得任何目標,並像gcc的包裝一樣,但是帶有參數?例如,這意味着使用make作爲gcc的Makefile文件

make 01.c 

都會有相同的結果

g++ -o 01.out 01.c 

回答

0

make已經有幾個"implicit rules"做你想要什麼。

例如,即使沒有makefile文件

make 01.o 

將運行:

c++ -c -o 01.o 01.cpp 

如果發現在你的當前目錄下名爲01.cpp文件。如果您想傳遞更多標誌,則可以設置CXXFLAGS環境變量。如果您確實使用g++而不是系統編譯器,則也可以設置CXX=g++

0

是 - 您使用隱式規則。

Summat像組默認的潛規則

0

您可以使用通配符也許(如果沒記錯的話)

.cpp.o: 
    $(CCC) $(CFLAGS) $< -o [email protected] 

- %

但是,在命令行中指定的東西是目標,而不是源 - 你想要什麼,而不是你擁有什麼。

看起來你想要的東西大約是:

%.out: %.c 
    g++ -o [email protected] $< 

這意味着:使(東西)的.out,首先要確保你有(點).C,然後運行G ++ -o(東西) .out(something).c

$ @始終是目標文件,$ <是第一個先決條件。

您需要運行make 01.out而不是make 01.c