
Цель
В обычном случае, когда цель (материнская цель) вызывает другую цель (дочернюю цель) в качестве предварительного условия, я хотел бы назначить переменную, специфичную для шаблона (см.страница руководства) при следующих условиях:
- Значение переменной основано на материнской цели.
- Дочерней цели нужна эта переменная
Контекст
Я могу сократить свой вариант использования до следующего. Я буду использовать переменную, специфичную для цели, вместо переменной, специфичной для шаблона, для простоты (проблема та же самая). Вот Makefile:
mother-target: VAR = Var-$@
mother-target: child-target
child-target:
echo VAR=$(VAR)
make
выведет VAR=Var-child-target
, и я хотел бы, чтобы он вывел VAR=Var-mother-target
.
Вопрос:Как ссылаться на имя цели, определяющей переменную? @
Автоматическая переменная, похоже, всегда разрешается в «последнюю» цель в цепочке.
Попытки:
VAR
как просто расширенная переменная, т.е.mother-target: VAR := Var-$@
. Но$@
пусто.- Объявление
VAR
закрытого типа, чтобы он не наследовался, не подходит для моего варианта использования: дочернему объекту нужна переменная.
Реальный случай — это случай с переменной, специфичной для шаблона, где на самом деле было бы полезно иметь имя разрешенной цели (т. е %-target: VAR = Var-$@
. )