在makefile中定義逗號字串和空格字串

2021-07-27 12:22:17 字數 630 閱讀 4656

空格和逗號是makefile中常見的分隔符,估計是寫不出乙個完全沒有空格和逗號的makefile的,沒有的話意義就不對了。但是如果要進行字串處理,空格和逗號就不能直接出現了,即使直接寫上make解析器也不會將其作為字串使用。所以應該這樣寫,才能讓空格和逗號變成字串。具體是誰想出來的已經不可考了,這裡就寫原創,請真正的原創不要見怪。

comma:=,

empty:=

space:=$(empty)

foo:= a,b,c

bar:= $(subst $(comma),$(space),$(foo))

all:

@echo $(foo)

@echo $(bar)

上面的**將逗號替換成空格。注意comma,empty,space這三個變數。

comma的等號後面就是乙個逗號;empty的等號後面沒東西,直接回車;space的等號後面是$(empty)再加乙個空格(如果你加多個空格那麼space就代表多個空格)

輸出結果(測試的makefile在/usr/local裡):

root@debian:/usr/local# make

a,b,c

a b c

Makefile中預定義變數

預定義變數 含義 不包含副檔名的目標檔名稱。所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。第乙個依賴檔案的名稱。所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。目標的完整名稱。所有的依賴檔案,以空格分開,不包含重複的依賴檔案。如果目標是歸檔成員,則該變...

Makefile中預定義變數

預定義變數 含義 不包含副檔名的目標檔名稱。所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。第乙個依賴檔案的名稱。所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。目標的完整名稱。所有的依賴檔案,以空格分開,不包含重複的依賴檔案。如果目標是歸檔成員,則該變...

Makefile中預定義變數

預定義變數 含義 不包含副檔名的目標檔名稱。所有的依賴檔案,以空格分開,並以出現的先後為序,可能包含重複的依賴檔案。第乙個依賴檔案的名稱。所有的依賴檔案,以空格分開,這些依賴檔案的修改日期比目標的建立日期晚。目標的完整名稱。所有的依賴檔案,以空格分開,不包含重複的依賴檔案。如果目標是歸檔成員,則該變...