Как передать запятую в функцию makefile - PullRequest
0 голосов
/ 23 апреля 2019

В Makefile определена функция print, которая принимает печатный текст в качестве аргумента и затем печатает его. Мой вопрос заключается в том, как передать запятую как текстовую часть, чтобы напечатать его? Например, ниже приведен соответствующий раздел makefile, в котором запятая недоступна для печати. ​​

print = echo '$(1)'

help:
        @$(call print, He lives in Paris, does not he?)

Теперь, если запустите makefile, как:

$ make help 

печатает

$  He lives in Paris

вместо

$  He lives in Paris, does not he?

Я знаю, что в makefile запятую используют как отдельный аргумент, но как я могу сделать ее печатной. Я использовал другую комбинацию escape-символов для передачи запятой в виде текстового сообщения, например \, /, $$, ',' ",", но ничего не работает

Ответы [ 2 ]

2 голосов
/ 23 апреля 2019

Как указано здесь :

Запятые и несоответствующие скобки или фигурные скобки не могут появляться в тексте аргумента в том виде, в котором они написаны;начальные пробелы не могут появляться в тексте первого аргумента, как написано.Эти символы могут быть введены в значение аргумента путем подстановки переменной.

так:

print = echo '$(1)'
comma:= ,

help:
        @$(call print,He lives in Paris$(comma) does not he?)
0 голосов
/ 23 апреля 2019

Вы можете сделать что-то вроде этого:

print = echo '$(1)' | sed 's/(\(.*\))/\1/'

help:
        @$(call print, (He lives in Paris, does not he?))

Вывод становится:

$ make help
 He lives in Paris, does not he?

Вы должны настроить регулярное выражение в sed, если включите скобки в строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...