0

我在makefile中有以下内容

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

在哪里,我的愿望是,如果GIT_INFO在命令行上设置为某些内容,则其值将填充为所需的字符串(具体不重要)。我添加了这些$(info..)行来验证这部分是否正在执行,并且确实如此,但是 的值GIT_INFO没有改变,事实并非如此。为什么不?我通过GIT_INFO=true命令行,两个地方都 print true

4

2 回答 2

2

手册中,

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

只需添加override

ifneq ($(GIT_INFO),)
$(info $(GIT_INFO))
override GIT_INFO:=Changed
$(info $(GIT_INFO))
endif
于 2012-10-22T04:26:12.573 回答
2

你必须使用override

ifneq ($(GIT_INFO),)
$(info $(GIT_INFO))
override GIT_INFO:=Changed
$(info $(GIT_INFO))
endif
于 2012-10-22T04:26:22.013 回答