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