Musterspezifische Make-Variable basierend auf dem Zielnamen der höchsten Ebene

Musterspezifische Make-Variable basierend auf dem Zielnamen der höchsten Ebene

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)

makewird 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:

  • VARals 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-$@)

verwandte Informationen