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