
Ziel
Im Normalfall, dass ein Ziel (Mutterziel) ein anderes Ziel (Kindziel) als Voraussetzung aufruft, möchte ich eine musterspezifische Variable zuweisen (sieheHandbuchseite) unter folgenden Bedingungen:
- Der Wert der Variablen basiert auf dem Mutterziel.
- Das untergeordnete Ziel benötigt diese Variable
Kontext
Ich kann meinen Anwendungsfall auf das Folgende reduzieren. Der Einfachheit halber werde ich eine zielspezifische Variable anstelle einer musterspezifischen verwenden (das Problem ist das gleiche). Hier ist das Makefile:
mother-target: VAR = Var-$@
mother-target: child-target
child-target:
echo VAR=$(VAR)
make
wird ausgeben VAR=Var-child-target
, und ich möchte, dass es ausgibt VAR=Var-mother-target
.
Frage:Wie verweist man auf den Namen des Ziels, das die Variable definiert? Die @
automatische Variable scheint immer zum „letzten“ Ziel in der Kette aufzulösen.
Versuche:
VAR
als einfach erweiterte Variable, d. h.mother-target: VAR := Var-$@
. Aber$@
ist leer.- „Privat“ zu deklarieren
VAR
, damit es nicht vererbt wird, passt nicht zu meinem Anwendungsfall: Das untergeordnete Ziel benötigt die Variable.
Der eigentliche Fall liegt bei einer musterspezifischen Variable vor, bei der es tatsächlich nützlich wäre, den Namen des Ziels aufzulösen (z. B. %-target: VAR = Var-$@
)