makefile之萬用字元擴充套件

2021-07-09 09:28:23 字數 859 閱讀 2779

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...