Makefile中的目標
一般目標
- 目標就是我們需要的最終文件,也是make的最終輸出
- Makefile的運行機制是:先將目標當成文件,查看文件是否存在,如果存在且是最新,那么直接結束,如果文件不存在,那么根據依賴和命令生成目標。
偽目標
- 偽目標也是目標
- 偽目標是一種特殊的目標,有其特殊性
- 偽目標的特殊性:偽目標不會當成文件來判斷,只是一個標簽
- 偽目標同樣可以有依賴,這樣make偽目標時就是先make依賴,然后運行規則
- 作用:偽目標每次都會更新
- 格式:.PHONY : xxx
- 例子:
.PHONY : clean #只要有這個聲明,不管是否有“clean”文件,要運行“clean”這個目標,只有“make clean”
多目標
bigoutput littleoutput : text.g generate text.g -$(subst output,,$@) > $@ #等價於 bigoutput : text.g generate text.g -big > bigoutput littleoutput : text.g generate text.g -little > littleoutput
相同目標
- 多條規則目標相同,稱為相同目標
- Makefile的處理規則:如果多條規則中只有一條規則有命令,那么直接合並成一條規則,目標不變,依賴疊加;如果有多條規則有命令,那么后面的規則會覆蓋前面的規則,且會爆告警
- Makefile中的自動頭文件依賴就是利用目標相同時,規則合並的技術實現
target1: dep1 target1: dep2 cmd2 #合並后 target1: dep1 dep2 cmd2
target1: dep1 cmd1 target1: dep2 cmd2 #合並后 target1: dep2 cmd2