gpt4 book ai didi

makefile - := and += in kernel Makefiles?有什么区别

转载 作者:行者123 更新时间:2023-12-02 05:52:16 25 4
gpt4 key购买 nike

Linux 内核 Makefile 中的 := 和 += 是否相同并且可以互换使用?如果不是,那两者有什么区别?

最佳答案

正如其他人所说,:= 是赋值。

但是 :== 之间有细微差别。在大多数情况下,这无关紧要,但可能会产生很大的不同。

X = $(Y)X 定义为递归变量,类似于 C 预处理器宏。
每当引用 X 时,将使用 Y 的值。
X 展开时展开。所以你可以在定义了X之后再定义Y,这样就OK了。

X := $(Y)X 定义为一个简单的变量。这更像是一个 C 赋值。
现在,Y 在定义时被扩展,因此稍后更改它不会有任何作用。

X += $(Y) 附加到 X,但保留其类型。
如果 X 之前用 = 定义,Y 将不会立即展开。如果从未定义 X,则相同。
如果 X 之前用 := 定义,Y 将立即展开。

你可以试试这个 exmaple makefile:

X = 1

Y = $(X)
Z := $(X)

X = 2

Y += $(X)
Z += $(X)

X = 3

test:
@echo "Y = $(Y)"
@echo "Z = $(Z)"

打印

Y = 3 3
Z = 1 2

关于makefile - := and += in kernel Makefiles?有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11339110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com