Что означает символ Makefile $ =? - PullRequest
0 голосов
/ 25 октября 2018

Я искал документацию по марке и онлайн-форумам.Я также искал документацию для Bash.Может быть, я что-то пропустил.

У меня есть make-файл, содержащий

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

Что означает $=?

1 Ответ

0 голосов
/ 25 октября 2018

Вы не говорите, какую версию make вы используете, поэтому я предполагаю стандартную POSIX-совместимую версию, такую ​​как GNU make.

В make-файлах $x для любого отдельного символа x означает расширение переменной с именем x, с очень немногими исключениями: $$ расширяется до одного $, $( и ${ указывают начало имени переменной.Может быть несколько других отдельных символов, которые являются специальными.

Но кроме них любой символ может быть допустимым именем переменной.Таким образом, $= расширяется до значения переменной =, точно так же, как $a расширяется до значения переменной a.Это может быть трудно установить, потому что простое использование:

= = foo

не будет работать.Но вы можете скрыть знак равенства от парсера make, используя другую переменную:

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

затем:

$ make
foo
...