Variable de creación específica del patrón basada en el nombre del objetivo de nivel más alto

Variable de creación específica del patrón basada en el nombre del objetivo de nivel más alto

Meta

En el caso habitual de que un objetivo (objetivo madre) llame a otro objetivo (objetivo secundario) como requisito previo, me gustaría asignar una variable específica de patrón (consulte lapagina del manual) con las siguientes condiciones:

  • El valor de la variable se basa en el objetivo madre.
  • El objetivo secundario necesita esta variable.

Contexto

Puedo reducir mi caso de uso a lo siguiente. Usaré una variable específica del objetivo en lugar de una específica del patrón por simplicidad (el problema es el mismo). Aquí está el archivo Make:

mother-target: VAR = Var-$@
mother-target: child-target

child-target:
    echo VAR=$(VAR)

makesaldrá VAR=Var-child-target, y me gustaría que salga VAR=Var-mother-target.

Pregunta:¿Cómo hacer referencia al nombre del objetivo que define la variable? La @variable automática parece resolverse siempre en el "último" objetivo de la cadena.

Intentos:

  • VARcomo una variable simplemente expandida, es decir mother-target: VAR := Var-$@. Pero $@está vacío.
  • Declarar VARprivado para que no se herede no se adapta a mi caso de uso: el objetivo secundario necesita la variable.

El caso real es con una variable específica de patrón donde realmente sería útil tener resuelto el nombre del objetivo (es decir, %-target: VAR = Var-$@)

información relacionada