从makefile覆盖变量

Raz*_*zer 2 makefile

在我的makefile文件中,我有一个变量FOO

FOO = /path/to/bar
Run Code Online (Sandbox Code Playgroud)

在makefile调用期间是否可以覆盖此变量?如下所示:

FOO=/path/to/foo make all
Run Code Online (Sandbox Code Playgroud)

Eta*_*ner 15

变量获得赋值的方式在 GNU make Manual的How Variables Get their Values部分指定。

变量可以通过几种不同的方式获取值:

因此,正如三十二上校所指出的,您可以在命令行上覆盖 makefile 中设置的变量。

你也可以,如果你希望这是一个你想要永久设置的变量,使用?=赋值,然后将使用该变量的环境值。


Col*_*Two 6

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
Run Code Online (Sandbox Code Playgroud)

  • 相对于命令行上目标名称的位置无关紧要。它们不是定位的。 (2认同)