Вы не говорите, какую версию make вы используете, поэтому я предполагаю стандартную POSIX-совместимую версию, такую как GNU make.
В make-файлах $x
для любого отдельного символа x
означает расширение переменной с именем x
, с очень немногими исключениями: $$
расширяется до одного $
, $(
и ${
указывают начало имени переменной.Может быть несколько других отдельных символов, которые являются специальными.
Но кроме них любой символ может быть допустимым именем переменной.Таким образом, $=
расширяется до значения переменной =
, точно так же, как $a
расширяется до значения переменной a
.Это может быть трудно установить, потому что простое использование:
= = foo
не будет работать.Но вы можете скрыть знак равенства от парсера make, используя другую переменную:
EQUAL = =
$(EQUAL) = foo
all: ; @echo $=
затем:
$ make
foo