Makefile中的一个坑

本文详细介绍了在Makefile中如何正确地使用变量替换功能,特别是针对文件后缀名的替换,例如从.c到.d的转换,并通过具体示例展示了空格在匹配过程中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述: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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值