Makefile中的一个坑

问题描述: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),这种方法进行替换时,会严格按照字符匹配,如果包含通配符,会严格按照规则匹配,包括等号两边的空格!!!

原文地址:https://www.cnblogs.com/chusiyong/p/11384980.html