Makefile語法規則
目標文件:依賴文件
變量定義
命令行
...
目標文件:Makefile中必須有的文件,可以是一個也可是多個
依賴文件:目標文件所依賴的文件,可以空着,多個文件用空格分開,可以使用通配符(*.c)
變量定義:必須在定義目標文件前定義
變量的實質是字符串替換
使用變量$(變量名)
賦值方法:=普通方式,左變量右值
:=使用前面的變量不使用後面的變量
?=變量沒被定義過就使用等號右邊的值,定義過就什麼也不做
ifeq
ifeq (bool表達式)
動作
endif
+= 給變量追加值
define,定義一系列動作,可以換行
define 變量名
動作
endef
override 改變make時的參數值
override 變量名=值
override 變量名:=值
override 變量名+=值
命令行:獨立開始用Tab鍵開頭
與依賴文件在同一行用分號;隔開,需要換行用\作爲換行符
讓上一條命令的結果應用在下一條命令,需要使用分號分割兩條命令
僞類:固定用法
.PHONEY:cleanall cleanobj cleandiff
cleanall:cleanobj cleandiff
rm program
cleanobj :
rm *.o
cleandiff:
rm *.diff
常見問題
遺漏分隔符,命令行沒用tab開頭
commands commence before first target ,命令行在目標文件前出現