任何人都可以清楚地解释变量分配在 Makefile 中的实际工作原理吗?
有什么区别:
VARIABLE = value
VARIABLE ?= value
VARIABLE := value
VARIABLE += value
我已阅读 section在GNU Make的手册中,但它对我来说仍然没有意义。
最佳答案
惰性设置
VARIABLE = value
变量的正常设置,但 value
字段中提到的任何其他变量都会使用该变量使用时的值(而不是声明时的值)递归扩展
立即设置
VARIABLE := value
通过简单扩展内部值来设置变量 - 其中的值在声明时扩展。
如果不存在则延迟设置
VARIABLE ?= value
仅当变量没有值时才设置该变量。当访问 VARIABLE
时,value
始终会被求值。相当于
ifeq ($(origin VARIABLE), undefined)
VARIABLE = value
endif
请参阅documentation了解更多详情。
追加
VARIABLE += value
将提供的值附加到现有值(如果变量不存在,则设置为该值)
关于makefile - GNU Makefile 变量赋值 =、?=、:= and +=? 之间有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/448910/