$$‹ във вторичното разширяване на неявни правила изглежда грешно - какво пропускам?

Изглежда, че $$< във второстепенно разширение на предпоставка за имплицитни правила, оценява към целта, а не, както бих очаквал от ръководството, първата вече присвоена предпоставка. какво ми липсва

> cat Makefile
.SECONDEXPANSION:

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

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

От ръководството предпоставките трябва да са prereq0 prereq01


person Mark Galeck    schedule 17.10.2013    source източник


Отговори (1)


Вярвам, че това е истинска грешка... или нещо подобно. Вижте https://savannah.gnu.org/bugs/index.php?28456

Това е трудно, защото по времето, когато make изпълнява второто разширение, той все още не знае каква е стойността на $<. Ще трябва да премине през списъка с предпоставки и вместо да разширява всичко наведнъж, да прави разширяването дума по дума, за да гарантира, че автоматичните променливи ще се появят възможно най-скоро.

Изпълнимо, но не и тривиално. Така или иначе. Сега явно не работи правилно.

person MadScientist    schedule 17.10.2013
comment
Е, всъщност бях изненадан да видя това в ръководството. Мислех си, че ако това нещо работи, вероятно е недокументирано. - person Mark Galeck; 18.10.2013