目标
在目标(母目标)调用另一个目标(子目标)作为先决条件的通常情况下,我想分配一个特定于模式的变量(请参阅手册页),满足以下条件:
- 变量的值基于母目标。
- 子目标需要这个变量
语境
我可以将我的用例减少到以下。为了简单起见,我将使用特定于目标的变量而不是特定于模式的变量(问题是相同的)。这是生成文件:
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-$@
)