基於最高等級目標名稱的特定於模式的 make 變量

基於最高等級目標名稱的特定於模式的 make 變量

目標

在目標(母目標)呼叫另一個目標(子目標)作為先決條件的通常情況下,我想指派一個特定於模式的變數(請參閱手冊頁),滿足以下條件:

  • 變數的值是基於母目標。
  • 子目標需要這個變數

情境

我可以將我的用例減少到以下。為了簡單起見,我將使用特定於目標的變數而不是特定於模式的變數(問題是相同的)。這是生成文件:

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

相關內容