在make中分配变量

时间:2012-10-22 02:48:12

标签: makefile variable-assignment gnu-make

我在makefile中有以下内容

ifneq ($(GIT_INFO),)
$(info $(GIT_INFO))
GIT_INFO:=Changed
$(info $(GIT_INFO))
endif

其中,我的愿望是如果在命令行中将GIT_INFO设置为某个值,则其值将填充所需的字符串(细节不重要)。我添加了$(info..)行来验证这件作品是否正在执行,但是GIT_INFO的值没有改变,事实并非如此。为什么不?我在命令行上传递GIT_INFO=true,两个地方都打印true

2 个答案:

答案 0 :(得分:2)

来自the manual

  

如果已使用命令参数...设置变量,则忽略makefile中的普通赋值。如果   你想在makefile中设置变量,即使它已被设置   使用命令参数,您可以使用覆盖指令...

只需添加override

ifneq ($(GIT_INFO),)
$(info $(GIT_INFO))
override GIT_INFO:=Changed
$(info $(GIT_INFO))
endif

答案 1 :(得分:2)

您必须使用override

ifneq ($(GIT_INFO),)
$(info $(GIT_INFO))
override GIT_INFO:=Changed
$(info $(GIT_INFO))
endif