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

Makefile中同一目标规则内复用%模式实现统一隐式规则的可行性探讨

关于Makefile模式规则替代的实现方案

可以实现!你写的这个模式规则本身就完全符合需求,不需要用到foreach/eval/call/define这类函数,也不需要为每个单词生成显式规则。

为什么这个规则能生效?

GNU Make的模式规则(也就是带%的隐式规则)天生支持这种多路径段的匹配逻辑:

  • 当Make需要构建类似prefix/FOO/FOO_suffix/FOO.txt的目标时,会自动将%匹配为FOO,同时对应到依赖路径中的%,也就是prefix/FOO/FOO_input.txt。
  • 只要目标和依赖路径中的%位置一一对应,Make就能准确识别出同一个匹配项,自动完成替换。

验证示例

假设你有prefix/FOO/FOO_input.txt文件,运行命令:

make prefix/FOO/FOO_suffix/FOO.txt

Make会:

  1. 匹配到你定义的模式规则,将%替换为FOO;
  2. 检查依赖prefix/FOO/FOO_input.txt是否存在;
  3. 执行规则中的echo @*命令(如果你想和原规则一样只输出第一个依赖,可以把命令改成echo @<)。

同样的逻辑也适用于BAR或者其他符合该路径模式的单词,完全不需要额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:52:36