Re: [問題] 請問怎麼makefile裡去讓別的目錄make?

看板LinuxDev作者 (小風)時間16年前 (2008/10/27 20:55), 編輯推噓2(200)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《awaysu (阿偉蘇)》之銘言: : 請教各位~ : 小弟初學有問題想請教~ : 我有A目錄,A目錄裡有B和C目錄, : 然後B和C目錄裡的makefile是寫好的, : 我要在A目錄也寫一個makefile : 要怎麼寫可以執行到B和C目錄的makefile? : 感謝! Makefile例: (最前端數字為行數) 1 SUBDIR = B C 2 3 .PHONY: alldir $(SUBDIR) 4 5 alldir: $(SUBDIR) 6 $(SUBDIR): 7 $(MAKE) -C $@ 8 9 B: C 這個 Makefile 會依照 SUBDIR 變數裡所包含的資料夾名稱, 一一進去執行 make, 需要注意的是第 9 行的敘述, 這是一個處理相依性的例子, "B: C" 的意思是, 編譯 B 之前, 要先編譯 C. -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.199.67

12/06 10:40, , 1F
.PHONY是什麼意思?
12/06 10:40, 1F
Makefile裡的各個 target 都是以檔案為基礎, 如果該檔案已經存在, 而又沒有 較新的相依條件(prerequisites)的話, 該 target 就不會再次執行. 上例中, 你會發現 target 都是 directory, 在 make 執行時, 這些 directory 已經存在, 又因為沒有相依條件, 因此不會被編譯. 要解決這種情形, 把這些 target 宣告 成 phony target 是一個好方法, make 會把 phony target 視為虛擬的 target 而不去以 target 為檔名(或directory名)去判別 target 是否已被編譯過, 因此 每次打 make 時, 即使有和 target 同名的檔案或 directory 存在, 這些 phony target 都會被執行. 以 make clean 為例, 如果你的 Makefile 裡沒有 .PHONY: clean , 你可以試著 放一個叫 clean 的檔案進去, 你會發現, 每次打 make clean 時, 都不會做你指 定的 clean 的動作. 總而言之, .PHONY 的用途, 就是解決 Target 及檔名相同時所帶來的衝突. ※ 編輯: phterry 來自: 122.117.199.67 (12/06 14:06)

12/06 15:23, , 2F
謝謝... 解釋很清楚.... 感謝您的分享 ^^
12/06 15:23, 2F
文章代碼(AID): #191RfA7_ (LinuxDev)
文章代碼(AID): #191RfA7_ (LinuxDev)