繁体   English   中英

Makefile 先决条件中的多个词干 (%)

[英]Multiple stems (%) in a Makefile prerequisite

我正在尝试使用以下 Makefile 创建目标foo.afoo.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM