[英]Multiple stems (%) in a Makefile prerequisite
我正在尝试使用以下 Makefile 创建目标foo.a
以foo.foo.b
作为先决条件,使用如图所示的词干字符 ( %
)。
%.a: %.%.b
touch $@
但是运行touch foo.foo.b; make foo.a
touch foo.foo.b; make foo.a
不适用于No rule to make target
。 下面的调试输出显示词干%
仅扩展一次。 如何获得在先决条件中替换所有%
的所需行为?
Considering target file 'sdf.a'.
File 'sdf.a' does not exist.
Looking for an implicit rule for 'sdf.a'.
Trying implicit prerequisite 'sdf.%.b'.
Looking for a rule with intermediate file 'sdf.%.b'.
Avoiding implicit rule recursion.
Trying pattern rule with stem 'sdf.%.b'.
Trying implicit prerequisite 'sdf.%.b,v'.
(..)
No implicit rule found for 'sdf.a'.
Finished prerequisites of target file 'sdf.a'.
Must remake target 'sdf.a'.
make: *** No rule to make target 'sdf.a'. Stop.
旁注:这似乎是一个微不足道的问题,但由于某种原因我找不到答案,也许我使用了错误的搜索词或忽略了一些简单的东西,如果是这样的话,抱歉。
阀杆只更换一次。 如果您希望多次插入词干内容,则需要使用二次扩展,即:
$ cat Makefile
.SECONDEXPANSION:
%.a: $$*.$$*.b
echo Making $@ from $<
输出:
$ touch foo.foo.b
$ make -s foo.a
Making foo.a from foo.foo.b
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.