假设我想要一个程序(比如说Some_Command
)从命令行获取目标的名称作为它的一个参数(通过标志传递-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 $@
$@
将在配方内扩展,给出您想要的效果。