拿clean舉例,如果make完成後,自己另外定義乙個名叫clean的檔案,再執行make clean時,將不會執行rm命令。圖示:為了避免出現這個問題,需要.phony: clean
(1)不新增.phony:clean
在makefile所在的目錄下touch乙個clean檔案
執行make–>執行make clean
結果:由於目錄下clean檔案衝突,無法執行make clean
(2)新增.phony:clean
執行make–>執行make clean
結果:make clean正常執行
.phony是乙個偽目標,可以防止在makefile中定義的只執行命令的目標和工作目錄下的實際檔案出現名字衝突,另一種是提交執行makefile時的效率。
更多關於.phony的知識請看
MAKEFILE中 PHONY的作用
本文 main1.c include intmain void main2.c include intmain void 分析 這裡需要生成兩個可執行檔案main1和main2 兩個目標 由於makefile只能有乙個目標,所以可以構造乙個沒有規則的終極目標all,並以這兩個可執行檔案作為依賴。如下...
makefile中的all和 PHONY的作用
請編寫乙個makefile同時編譯 鏈結下面兩個程式 main1.c include int main void main2.c include int main void 分析 這裡需要生成兩個可執行檔案main1和main2 兩個目標 由於makefile只能有乙個目標,所以可以構造乙個沒有規則...
makefile中的 PHONY和all的作用
偽目標是這樣乙個目標 它不代表乙個真正的檔名,在執行make時可以指定這個目標來執行所在規則定義的命令,有時也可以將乙個偽目標稱為標籤。偽目標通過phony來指明。phony定義偽目標的命令一定會被執行,下面嘗試分析這種優點的妙處。1 如果我們指定的目標不是建立目標檔案,而是使用makefile執行...