You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GNU Make如何一行完成.c.o、.s.o到对应.d后缀的两次变量替换

合并后单行实现代码

你可以通过嵌套替换引用,或者直接使用patsubst模式匹配函数,把两次替换合并为一行,不需要中间变量PRJ_DEP_TEMP:

# 写法1:嵌套替换引用,和原逻辑完全等价
PRJ_DEP += $(patsubst %.s.o,%.s.d,$(PRJ_OBJ:.c.o=.c.d))

# 写法2:如果确认PRJ_OBJ中仅包含.c.o和.s.o两类后缀的文件,可直接批量替换最后一级后缀
PRJ_DEP += $(PRJ_OBJ:.o=.d)

相关语法说明

GNU Make的替换引用规则:

替换引用是修改变量值的便捷语法,基础格式为$(变量名:匹配模式=替换模式),支持用%作为通配符匹配单词中的任意部分,也支持多层嵌套调用,内层函数的输出可以直接作为外层函数的输入。

两种写法的效果和原代码中两行替换的效果完全一致,你可以根据自己的实际场景选择。


内容的提问来源于stack exchange,提问作者Danijel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:54:04