
ゴール
通常、ターゲット(親ターゲット)が別のターゲット(子ターゲット)を前提条件として呼び出す場合、パターン固有の変数を割り当てたいと思います(マニュアルページ)を以下の条件で提供します。
- 変数の値は、マザーターゲットに基づきます。
- 子ターゲットにはこの変数が必要です
コンテクスト
私のユースケースは次のように縮小できます。簡単にするために、パターン固有の変数ではなくターゲット固有の変数を使用します (問題は同じです)。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-$@
)