Makefile多目标依赖匹配及通配符匹配片段获取问题
你的原代码无法生效的核心原因是:Make 解析规则的依赖列表阶段,自动变量$@还未被赋值,因此无法正确关联目标和对应的.test后缀依赖;同时普通通配符*也无法直接提取匹配到的前缀部分。
正确实现方式如下:
# 声明需要生成的目标列表 TARGETS := a b # 静态模式规则:指定每个目标依赖对应名称的 .test 后缀文件 $(TARGETS): %: %.test # 模式规则匹配所有 .test 结尾的目标 %.test: @echo $@ @echo $*
参数说明
$@:规则对应的完整目标名,执行make a时这里会输出a.test$*:模式规则中%通配符匹配到的内容,就是你需要的前缀a- 注意:规则内的命令行开头必须使用制表符(Tab),不能用空格,否则Make会抛出语法错误。
执行效果
运行make a后输出:
a.test a
完全符合你的预期要求。
内容的提问来源于stack exchange,提问作者ssn
相关产品推荐
相关产品推荐

