让我们考虑以下Makefile:
.PHONY : all
OPTS += -DBLA
OPTS += -DBLUBB
STUFF = default
all :
./do_something $(OPTS) $(STUFF)
可以在命令行上传递变量。因此,通过以下调用
confus@confusion:/tmp/$ make STUFF=foo
make将运行CCD_ 1。
与我认为不能附加到变量的内容相反:
confus@confusion:/tmp/$ make STUFF+=foo OPTS+=-DMOREOPT
将简单地运行./do_something -DMOREOPT foo
(就好像我忽略了加号一样),而我希望它是./do_something -DBLA -DBLUBB -DMOREOPT default foo
。
有没有一种方法可以通过命令行选项附加到make变量?
如果这是GNU make,则必须在makefile中使用override
指令来指定您希望在makefile内设置的值优先于命令行值:
override OPTS += -DBLA
override OPTS += -DBLUBB
override STUFF += default
如果重要的话,请注意,这将把命令行中提供的设置放在第一位,把makefile中的设置放最后。