【发布时间】:2018-10-25 18:07:04
【问题描述】:
我搜索了 Make 和在线论坛的文档。我还搜索了 Bash 的文档。也许我错过了什么。
我有一个包含
的makefileBUILD_SYSTEM :=$= build/make/core
BUILD_SYSTEM_COMMON :=$= build/make/common
include $(BUILD_SYSTEM_COMMON)/core.mk
$= 是什么意思?
【问题讨论】:
我搜索了 Make 和在线论坛的文档。我还搜索了 Bash 的文档。也许我错过了什么。
我有一个包含
的makefileBUILD_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
【讨论】: