隐式规则的辅助先决条件扩展中的$$<
似乎是对目标的评估,而不是如我手册中所预期的那样,已经分配了第一个先决条件。我错过了什么?
> cat Makefile
.SECONDEXPANSION:
foobar%: prereq% $$<1
@echo prereqs: $^
touch $@
>touch foobar01 prereq0 prereq01
>make foobar0
prereqs: prereq0 foobar01
touch foobar0
从手册中,先决条件应为prereq0 prereq01
答案 0 :(得分:1)
我相信这是一个真正的错误......或者其他什么。见https://savannah.gnu.org/bugs/index.php?28456
这很棘手,因为在make执行第二次扩展时,它还不知道$<
的值是多少。它需要通过先决条件列表,而不是一次扩展所有内容,逐字扩展,以确保自动变量尽快出现。
可行,但不是微不足道的。无论如何。它现在显然无法正常工作。