GNU Make: нет вывода при использовании `define var =` - PullRequest
0 голосов
/ 29 июня 2018

Фрагмент 1:

define HELP_TEXT
This is the help text.
endef

.PHONY: help
help:
      @echo $(HELP_TEXT)

Тест:

$ make help
This is the help text.
$

Фрагмент 2:

define HELP_TEXT =
This is the help text.
endef

.PHONY: help
help:
      @echo $(HELP_TEXT)

Тест:

$ make help

$

Что здесь происходит? Согласно документации, между двумя синтаксисами не должно быть различий в поведении.

ПРИМЕЧАНИЕ. Моя версия GNU Make - 3.81.

1 Ответ

0 голосов
/ 29 июня 2018

Файл NEWS для версии 3.82 (28 июля 2010 г.) упоминает это:

  • Директива define make теперь позволяет оператору присваивания переменной после имени переменной разрешать простое, условное или добавление многострочного присваивания переменной.

Так что это просто функция, отсутствующая в GNU make 3.81. Фактически, в более ранних версиях make переменная называется HELP_TEXT =, что можно увидеть, если вы попробуете это:

define HELP_TEXT =
This is the help text.
endef

.PHONY: help
help:
    @echo $(HELP_TEXT =)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...