可以附加到make变量而不覆盖Makefile中设置的内容吗?

时间:2016-08-03 14:17:41

标签: gnu-make

让我们考虑以下Makefile:

.PHONY : all

OPTS += -DBLA
OPTS += -DBLUBB
STUFF = default

all :
    ./do_something $(OPTS) $(STUFF)

可以在命令行上传递变量。所以通过以下电话

confus@confusion:/tmp/$ make STUFF=foo

make将运行./do_something -DBLA -DBLUBB foo

与我认为不能附加到变量的内容相反:

confus@confusion:/tmp/$ make STUFF+=foo OPTS+=-DMOREOPT

只会运行./do_something -DMOREOPT foo(好像我遗漏了加号),当我期望它./do_something -DBLA -DBLUBB -DMOREOPT default foo时。

有没有办法使用命令行选项附加到make变量?

1 个答案:

答案 0 :(得分:1)

如果这是GNU make,则必须在makefile中使用override指令指定您希望makefile中设置的值优先于命令行值:

override OPTS += -DBLA
override OPTS += -DBLUBB
override STUFF += default

如果重要,请注意这将首先在命令行中提供设置,并且makefile中的设置最后。