ルール外から$@(ルールターゲットファイル名)にアクセスする

ルール外から$@(ルールターゲットファイル名)にアクセスする

プログラムがSome_Commandコマンドラインからターゲット名を引数の1つに取り込み(フラグを介して渡され-p)、そのコマンドを呼び出す引数がCOMMON_ARG変数に含まれることを望んでいるとします。再利用(馬) 。 わかりました$@以下を使用してターゲットの名前にアクセスできます。ルール内で。この変数の評価を延期する方法はありますか?

通常私が望む

COMMON_ARG:= "-p $@"
foo:bar
    Some_Command $(COMMAND_ARG) $< -o $@

Make barこれは…

Some_Command -p foo bar -o foo

答え1

=(代わりに)で変数を宣言する:=再帰拡張どこで使用されても、宣言するときはそうではありません。だから

COMMON_ARG = -p $@
foo: bar
        Some_Command $(COMMAND_ARG) $< -o $@

$@所望の効果を提供するために、レシピ内で拡張されます。

関連情報