如何在gnu make中添加命令行变量?

时间:2016-10-19 16:35:57

标签: makefile gnu-make

在gnu make中,我可以使用+=

中的Makefile运算符添加到变量
V += foo
V += bar

all:
    echo "$(V)"

运行:

$ make
echo "foo bar"
foo bar

但是,如果我在命令行上定义变量,

$ make V=fail
echo "fail"
fail

然后没有添加任何东西。

如何让gnu make添加到命令行中定义的变量?

2 个答案:

答案 0 :(得分:4)

命令行分配take precedence over in-makefile分配,即使in-makefile分配是追加操作。

要使in-makefile分配优先,您必须使用override关键字:

override V += foo
override V += bar

all:
        echo "$(V)"

答案 1 :(得分:2)

对于makefile中的变量赋值,要覆盖命令行上的定义,您需要使用override directive

因此,makefile中的变量赋值应如下所示:

override V += bar