モード別の最上位ターゲット名に基づいて変数を作成する

モード別の最上位ターゲット名に基づいて変数を作成する

ターゲット

ターゲット(親ターゲット)が前提条件で別のターゲット(サブターゲット)を呼び出す一般的な場合は、モード固有の変数を割り当てたいと思います(参照:マニュアルページ)、次の条件:

  • 変数の値は親ターゲットに基づいています。
  • サブターゲットにはこの変数が必要です

コンテキスト

ユースケースを次のように減らすことができます。簡単にするために、モード固有の変数の代わりにターゲット固有の変数を使用します(問題は同じです)。生成されたファイルは次のとおりです。

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-$@

ベストアンサー1

おすすめ記事