Re: [問題] 請問怎麼makefile裡去讓別的目錄make?
※ 引述《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
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
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章