Makefile 符号 $= 是什么意思?
What does the Makefile symbol $= mean?
我已经搜索了 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
的变量,极少数例外:$$
扩展为单个 [ =17=、$(
、${
表示变量名的开头。可能还有其他一些特殊的单个字符。
但除此之外,任何字符都可以是有效的变量名。所以 $=
扩展为变量 =
的值,就像 $a
扩展为变量 a
的值一样。这可能很难设置,因为只需使用:
= = foo
行不通。但是您可以使用另一个变量从 make 解析器中隐藏等号:
EQUAL = =
$(EQUAL) = foo
all: ; @echo $=
然后:
$ make
foo
我已经搜索了 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
的变量,极少数例外:$$
扩展为单个 [ =17=、$(
、${
表示变量名的开头。可能还有其他一些特殊的单个字符。
但除此之外,任何字符都可以是有效的变量名。所以 $=
扩展为变量 =
的值,就像 $a
扩展为变量 a
的值一样。这可能很难设置,因为只需使用:
= = foo
行不通。但是您可以使用另一个变量从 make 解析器中隐藏等号:
EQUAL = =
$(EQUAL) = foo
all: ; @echo $=
然后:
$ make
foo