プログラムが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 $@
$@
所望の効果を提供するために、レシピ内で拡張されます。