我有一个测试Makefile
CPPFLAGS += "option B"
$(info CPPFLAGS = $(CPPFLAGS))
当我make
时,我得到了
CPPFLAGS = "option B"
make: *** No targets. Stop.
但当我make CPPFLAGS="options A"
时,我得到了
CPPFLAGS = option A
make: *** No targets. Stop.
我想要字符串"选项B"附加到"选项A"来自命令行。 这有什么问题? 提前谢谢。
答案 0 :(得分:2)
这是因为来自命令行的变量优先于其余变量。来自here:
如果已使用命令参数设置变量, 然后忽略makefile 中的普通作业 。如果 你想在makefile中设置变量,即使它已被设置 使用命令参数,您可以使用
override
指令,这是一个 看起来像这样的行:override variable = value
或
override variable := value
要将更多文本附加到命令行中定义的变量,请使用:
override variable += more text
标有
override
标志的变量分配有更高的分配 优先级比所有其他分配,除了另一个覆盖。 后续分配或附加到此变量但不是 标记override
将被忽略。
试试这个:
override CPPFLAGS += option B