Shell
在規則外訪問 $@(規則目標的文件名)
假設我想要一個程序(例如)從命令行
Some_Command
獲取目標的名稱作為其參數之一(使用 flag 傳遞),並且我希望呼叫命令的參數包含在單個我可以重複使用的-p
變數(比如,COMMON_ARG
)。 我知道我可以使用 訪問目標的名稱$@
,但我相信這個變數只有在規則內部才有值。有沒有辦法推遲對該變數的評估?通常,我想擁有
COMMON_ARG:= "-p $@" foo:bar Some_Command $(COMMAND_ARG) $< -o $@
所以
Make bar
呼叫Some_Command -p foo bar -o foo
如果你用
=
(而不是:=
)聲明一個變數,它將在任何使用它的地方遞歸擴展,而不是在它被聲明的時候。因此COMMON_ARG = -p $@ foo: bar Some_Command $(COMMAND_ARG) $< -o $@
將
$@
在配方內部擴展,產生您想要的效果。