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