Что делает, - и + делают, поскольку префиксы к строкам рецепта в Делают?

В руководстве Make-файла GNU это упоминает эти префиксы.

Если.ONESHELL будет обеспечен, то только первая строка рецепта будет проверена на специальные символы префикса (‘ ’, ‘-’, и ‘+’).

Что эти префиксы делают, и где они упоминаются?

161
задан Jonathan Leffler 13 August 2010 в 13:46
поделиться

2 ответа

Они управляют поведением make для помеченных командных строк:

  • @ подавляет обычное «эхо» выполняемой команды.

  • - означает игнорирование статуса выхода выполняемой команды (обычно ненулевой статус выхода останавливает эту часть сборки).

  • + означает «выполнить эту команду под make -n » (или «make -t» или «make -q»), когда команды не выполняются нормально. См. Также спецификацию POSIX для make , а также §9.3 руководства GNU Make.

Нотация + является (стандартизованным POSIX) обобщением де-факто (нестандартного) механизма , посредством которого командная строка содержит $ {MAKE} или $ (MAKE) выполняется под make -n .

( @ обсуждается в §5.2 руководства GNU Make; - описывается в §5.5 ; и ] §5.7.1 упоминает использование + .)

215
ответ дан 23 November 2019 в 21:26
поделиться

@ предотвращает вывод командной строки на консоль. Вы можете сделать это глобально с помощью -s или - keep-silent

- указывает программе make продолжать работу, даже если команда по какой-то причине не работает. Вы можете сделать это глобально с помощью флага -i (или - ignore-errors ).

+ Я не был знаком до того, как вы спросили. Насколько я могу судить, это сводит на нет эффект -n , -t и -q , все из которых в основном говорят make не запускаться команды. Таким образом, линия с + впереди все равно будет запущена.

Если вы читали официальное руководство по Gnu Make, все они упоминаются в главе 5 . В моем старом экземпляре руководства это была глава, посвященная «командам», но теперь термин du jour, кажется, означает «рецепты».

38
ответ дан 23 November 2019 в 21:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: