我已经查阅了Make的文档和在线论坛。我也查看了Bash的文档,也许我漏掉了一些信息。
我有一个包含以下内容的makefile:
BUILD_SYSTEM :=$= build/make/core
BUILD_SYSTEM_COMMON :=$= build/make/common
include $(BUILD_SYSTEM_COMMON)/core.mk
$=
是什么意思?
您没有说明使用的make版本,因此我将假设您是使用标准POSIX兼容版本,例如GNU make。
在makefile中,对于任何单个字符x,$x
表示变量名为x
的扩展,除了极少数例外: $$
扩展为一个单一的$
,$(
和${
表示变量名的开始。可能还有其他几个特殊的单字符。
但是除此之外,任何字符都可以是有效的变量名。所以$=
扩展为变量=
的值,就像$a
扩展为变量a
的值一样。这可能很难设置,因为简单地使用:
= = foo
无法正常工作。但是您可以使用另一个变量隐藏等号,以使make解析器不受影响:
EQUAL = =
$(EQUAL) = foo
all: ; @echo $=
然后:
$ make
foo