Специфическая для шаблона переменная make на основе целевого имени самого высокого уровня

Специфическая для шаблона переменная make на основе целевого имени самого высокого уровня

Цель

В обычном случае, когда цель (материнская цель) вызывает другую цель (дочернюю цель) в качестве предварительного условия, я хотел бы назначить переменную, специфичную для шаблона (см.страница руководства) при следующих условиях:

  • Значение переменной основано на материнской цели.
  • Дочерней цели нужна эта переменная

Контекст

Я могу сократить свой вариант использования до следующего. Я буду использовать переменную, специфичную для цели, вместо переменной, специфичной для шаблона, для простоты (проблема та же самая). Вот 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-$@. )

Связанный контент