在Makefile中,我不知道为什么这个+ =运算符不起作用

时间:2014-08-14 01:21:56

标签: makefile

我有一个测试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"来自命令行。 这有什么问题? 提前谢谢。

1 个答案:

答案 0 :(得分:2)

这是因为来自命令行的变量优先于其余变量。来自here

  

如果已使用命令参数设置变量,   然后忽略makefile 中的普通作业 。如果   你想在makefile中设置变量,即使它已被设置   使用命令参数,您可以使用override指令,这是一个   看起来像这样的行:

 override variable = value 
     

 override variable := value
     

要将更多文本附加到命令行中定义的变量,请使用:

 override variable += more text
     

标有override标志的变量分配有更高的分配   优先级比所有其他分配,除了另一个覆盖。   后续分配或附加到此变量但不是   标记override将被忽略。

试试这个:

override CPPFLAGS += option B