makefile - GNU Makefile 变量赋值 =、?=、:= and +=? 之间有什么区别

标签 makefile gnu-make

任何人都可以清楚地解释变量分配在 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/

相关文章:

makefile - "wildcard"函数提取目录中的源文件。

windows - 如何在Windows中安装和使用 "make"?

python - 在 OS X 上安装 memcached 以与 django (python) 一起使用

c - gcc - 文件无法识别 : File format not recognized

php - 在 OS X 上编译 PHP --with-php-config

makefile - 并行生成文件需要依赖项排序

Makefile:配方中模式规则%的重用值

c++ - math.h 即使包含在 makefile 中也不被包含

linux - 在 Makefile 中动态获取 C 文件

makefile - gnu make 将包含路径放入 make 文件中