小编典典

GNU Makefile 变量赋值 =、?=、:= 和 += 有什么区别?

all

任何人都可以清楚地解释变量赋值在 Makefile 中是如何工作的。

和有什么区别:

 VARIABLE = value
 VARIABLE ?= value
 VARIABLE := value
 VARIABLE += value

我已经阅读了GNU Make
手册中的部分,但对我来说仍然没有意义。


阅读 191

收藏
2022-03-01

共1个答案

小编典典

懒人集

VARIABLE = value

一个变量的正常设置,但在该value字段中提到的任何其他变量都在使用该变量时使用它们的值递归扩展,而不是它在声明时的值

立即设置

VARIABLE := value

通过内部值的简单扩展来设置变量 - 其中的值在声明时扩展。

不存在时的惰性设置

VARIABLE ?= value

仅当变量没有值时才设置变量。value总是在VARIABLE被访问时评估。它相当于

ifeq ($(origin VARIABLE), undefined)
  VARIABLE = value
endif

有关更多详细信息,请参阅文档

附加

VARIABLE += value

将提供的值附加到现有值(如果变量不存在,则设置为该值)

2022-03-01