makefile中使用萬用字元的注意點
關於makefile中的萬用字元話題其實很簡單,在使用時心中知道以下幾點就ok。
(1)makefile中的萬用字元與通常的shell萬用字元是一樣的。
萬用字元匹配?
任何的單一字元
*任何的字元字串
[set]
任何在set裡的字元
[!set]
任何不在set裡的字元
(2)萬用字元擴充套件發生的時機。萬用字元擴充套件發生在如下時刻:
① 在規則的目標、依賴中的萬用字元,make在讀取makefile時會自動為其進行匹配處理(即展開)
② 在命令中的萬用字元不需要make來操心,它們最總由shell來展開。
③ 除上面兩點之外的地方(如變數定義),不能直接使用萬用字元,只能通過函式wildcard來達到目的
以下,通過乙個簡單的例子來感受下:
目錄結構如下:
makefile內容如下:
執行結果如下:
# make
cc.c
bb.c
aa.c
cc.o bb.o aa.o
cc.c bb.c aa.c
%.caa.c bb.c cc.c
aa.c bb.c cc.c
可以看到儘管在變數定義中使用了萬用字元,但是在規則中依然正確擴充套件了。不過其中的src2中的%,shell是不認識的。
Makefile 號萬用字元
本文的測試環境是windows7下使用mingw提供的make.exe 例如,如果你想編譯乙個資料夾下的所有.c檔案,你可能會這樣寫 1 o c 2 gcc o 但是如果整個檔案只有這兩行的話,就會出現這樣的錯誤 make target not found.stop.要知道原因,我們先來看看另乙個m...
makefile的擴充套件
1.makefile gnu make的工作分為兩個階段。在第一階段,make讀取makefile檔案 內建變數及其值 隱含規則和具體規則 構造所有目標的依賴關係以及所有目標各自的依賴等。在第二階段,make決定需要重新構造的目標並使用必要的規則進行工作。make工作第一階段發生的擴充套件是立即擴充...
Makefile中萬用字元 與 的區別
本文的測試環境是windows7下使用mingw提供的make.exe 例如,如果你想編譯乙個資料夾下的所有.c檔案,你可能會這樣寫 1 o c 2 gcc o 但是如果整個檔案只有這兩行的話,就會出現這樣的錯誤 make target not found.stop.要知道原因,我們先來看看另乙個m...