问题描述:Makefile中,我想将一个变量的后缀全部进行替换,如将所有的.c后缀变成.d后缀
方法:$(CUR_SOURCE: .c = .d )
说明:查阅相关资料,了解到上述这种语法就可以将所有的.c后缀变成.d后缀
测试代码:
VAR = a.c b.c OUT = $(VAR: .c = .d) all : $(info $(VAR)) # a.c b.c $(info $(OUT)) # a.c b.c
结果:死活不对
死办法,按照例子一个个单词敲,连空格都一样,代码如下:
VAR = a.c b.c OUT = $(VAR:.c=.d) all : $(info $(VAR)) # a.c b.c $(info $(OUT)) # a.d b.d
结果:成功
对比:
成功 OUT = $(VAR:.c=.d) 失败 OUT = $(VAR: .c = .d)
不同:空格不一样
结论:$(CUR_SOURCE:xxx =yyy),这种方法进行替换时,会严格按照字符匹配,如果包含通配符,会严格按照规则匹配,包括等号两边的空格!!!