从 makefile 中覆盖变量

问题描述 投票:0回答:3

在我的makefile中我有一个变量

FOO

FOO = /path/to/bar

是否可以在 makefile 调用期间覆盖此变量?像下面这样的东西:

FOO=/path/to/foo make all
makefile
3个回答
39
投票

在指定目标之前将它们指定为

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

18
投票

变量获取赋值的方式在 GNU make 手册的变量如何获取它们的值部分指定。

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

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

您也可以,如果您希望这是一个您想要永久设置的变量,请使用

?=
赋值,然后将使用该变量的环境值。


0
投票

您也可以简单地使用

?=
运算符:

$ cat Makefile 
Foo ?= asdf

all:
    echo $(Foo)
$ make all
echo asdf
asdf
$ Foo=bar make all
echo bar
bar
© www.soinside.com 2019 - 2024. All rights reserved.