空格和逗号是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