Shell

在規則外訪問 $@(規則目標的文件名)

  • May 17, 2021

假設我想要一個程序(例如)從命令行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 $@

$@在配方內部擴展,產生您想要的效果。

引用自:https://unix.stackexchange.com/questions/650124