是否可以在不覆盖 Makefile 中设置的内容的情况下附加到 make 变量?



让我们考虑以下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中的设置放最后。

最新更新