makefile描述規則:
target...:prerequisites...
command...
其中target爲目標文件,prerequisites爲依賴文件,command爲生成規則
“-”號:
在makefile命令前加一個減號,表示不管命令是否出錯,都繼續執行後面的操作
自動化變量:
$@表示規則中目標集合;
$<表示規則中首個依賴文件(the first prerequisite);
$?表示規則中所有被改變過的依賴文件;
$^表示所有依賴文件集合。
$+類似$^,但保留了依賴文件中重複出現的文件,主要用於程序鏈接時庫交叉引用的場合。
參見http://www.2cto.com/os/201302/191344.html
override指示符
override爲了防止命令行變量定義的值替代Makefile中變量定義的值。需要在Makefile中使用指示符“override”來聲明這個變量,語法爲
override<variable>=<value>
override <variable>:=<value>
舉例:假定Makefile爲
.PHONY: all override foo = x all: @echo "foo = $(foo)"
執行make -f Makefile foo=abc
輸出爲 foo = x,去掉override,輸出爲 foo=abc。
部分函數
字符串替換函數subst:$(subst <from>,<to>,<text>)
將字串<text>中的<from>字符串替換成<to>,返回被替換過後的字符串。
函數shell:運行shell命令
參數爲操作系統Shell的命令,將執行shell命令後的輸出作爲函數返回。
@echo:顯示命令
參見《跟我一起寫makefile》