Makefile符号$=的含义是什么?

3

我已经查阅了Make的文档和在线论坛。我也查看了Bash的文档,也许我漏掉了一些信息。

我有一个包含以下内容的makefile:

BUILD_SYSTEM :=$= build/make/core
BUILD_SYSTEM_COMMON :=$= build/make/common
include $(BUILD_SYSTEM_COMMON)/core.mk

$=是什么意思?

1个回答

3

您没有说明使用的make版本,因此我将假设您是使用标准POSIX兼容版本,例如GNU make。

在makefile中,对于任何单个字符x,$x表示变量名为x的扩展,除了极少数例外: $$扩展为一个单一的$$(${表示变量名的开始。可能还有其他几个特殊的单字符。

但是除此之外,任何字符都可以是有效的变量名。所以$=扩展为变量=的值,就像$a扩展为变量a的值一样。这可能很难设置,因为简单地使用:

= = foo

无法正常工作。但是您可以使用另一个变量隐藏等号,以使make解析器不受影响:

EQUAL = =
$(EQUAL) = foo
all: ; @echo $=

然后:

$ make
foo

是的,gnu-make。我已经包含了标签。 - Les

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接