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

GNU Make模式规则使用疑问:改写Makefile后为何执行失败?

问题原因与解决方法

问题根源

GNU Make的普通模式规则(如b%: a%)要求%必须匹配至少一个字符。目标b对应的模式b%需要%匹配空字符串,这不符合普通模式规则的匹配要求,因此Make无法识别该规则来生成b;而b.e能正常匹配(%匹配.e),但b不行,最终导致报错。

解决方法

使用静态模式规则,明确指定目标列表,这样%可以匹配空字符串,实现统一规则处理:

all: a a.e b b.e

.SUFFIXES:

a a.e:
    touch $@

# 静态模式规则:指定目标为b、b.e,分别匹配a、a.e
b b.e: b%: a%
    ln -sf $(notdir $<) $@

clean:
    rm -f a* b*

验证效果

执行make后,会依次生成a、a.e,再通过软链接生成b、b.e,最终完成所有目标;执行make clean可正常清理生成的文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:31:18