
Meta
No caso usual de um alvo (alvo mãe) chamando outro alvo (alvo filho) como pré-requisito, eu gostaria de atribuir uma variável específica do padrão (veja opágina de manual) com as seguintes condições:
- O valor da variável é baseado no alvo mãe.
- O alvo filho precisa desta variável
Contexto
Posso reduzir meu caso de uso ao seguinte. Usarei uma variável específica do alvo em vez de uma variável específica do padrão para simplificar (o problema é o mesmo). Aqui está o Makefile:
mother-target: VAR = Var-$@
mother-target: child-target
child-target:
echo VAR=$(VAR)
make
produzirá VAR=Var-child-target
e eu gostaria que ele produzisse VAR=Var-mother-target
.
Pergunta:Como referir-se ao nome do alvo que define a variável? A @
variável automática parece sempre resolver para o "último" alvo da cadeia.
Tentativas:
VAR
como uma variável simplesmente expandida, ou sejamother-target: VAR := Var-$@
, . Mas$@
está vazio.- Declarar
VAR
privado para que não seja herdado não se adequa ao meu caso de uso: o destino filho precisa da variável.
O caso real é com uma variável específica do padrão onde ter o nome do alvo resolvido seria realmente útil (ou seja %-target: VAR = Var-$@
)