在我的makefile中,我有一个变量FOO
:
FOO = /path/to/bar
是否可以在makefile调用期间覆盖此变量?类似于以下内容:
FOO=/path/to/foo make all
答案 0 :(得分:4)
在指定目标之前将其指定为Var=Value
,例如make FOO=/path/to/foo all
。
$ cat Makefile
Foo = asdf
all:
echo $(Foo)
$ make all
echo asdf
asdf
$ make Foo=bar all
echo bar
bar
答案 1 :(得分:2)
变量获取赋值的方式在GNU make Manual的How Variables Get Their Values部分中指定。
变量可以通过几种不同的方式获取值:
- 您可以在运行make时指定覆盖值。见Overriding Variables。
- 您可以在makefile中指定一个值,可以使用赋值(请参阅Setting Variables)或使用逐字定义(请参阅Defining Multi-Line Variables)。
- 环境中的变量变为变量。见Variables from the Environment。
- 为每个规则赋予几个自动变量新值。这些中的每一个都具有单一的常规用途。见Automatic Variables。
- 多个变量具有恒定的初始值。见Variables Used by Implicit Rules。
因此,正如Thirty Thirty 2所示,您可以在命令行上覆盖makefile中设置的变量。
如果您希望这是一个要持久设置的变量,也可以使用?=
赋值,然后使用该变量的环境值。