$$<隐含规则的二次扩展似乎是错误的 - 我错过了什么?

时间:2013-10-17 21:16:01

标签: makefile gnu-make

隐式规则的辅助先决条件扩展中的$$<似乎是对目标的评估,而不是如我手册中所预期的那样,已经分配了第一个先决条件。我错过了什么?

> cat Makefile
.SECONDEXPANSION:

foobar%: prereq% $$<1
    @echo prereqs: $^
    touch $@ 

>touch foobar01 prereq0 prereq01
>make foobar0
prereqs: prereq0 foobar01
touch foobar0

从手册中,先决条件应为prereq0 prereq01

1 个答案:

答案 0 :(得分:1)

我相信这是一个真正的错误......或者其他什么。见https://savannah.gnu.org/bugs/index.php?28456

这很棘手,因为在make执行第二次扩展时,它还不知道$<的值是多少。它需要通过先决条件列表,而不是一次扩展所有内容,逐字扩展,以确保自动变量尽快出现。

可行,但不是微不足道的。无论如何。它现在显然无法正常工作。