В руководстве Make-файла GNU это упоминает эти префиксы.
Если.ONESHELL будет обеспечен, то только первая строка рецепта будет проверена на специальные символы префикса (‘ ’, ‘-’, и ‘+’).
Что эти префиксы делают, и где они упоминаются?
Они управляют поведением 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 упоминает использование +
.)
@
предотвращает вывод командной строки на консоль. Вы можете сделать это глобально с помощью -s
или - keep-silent
-
указывает программе make продолжать работу, даже если команда по какой-то причине не работает. Вы можете сделать это глобально с помощью флага -i
(или - ignore-errors
).
+
Я не был знаком до того, как вы спросили. Насколько я могу судить, это сводит на нет эффект -n
, -t
и -q
, все из которых в основном говорят make не запускаться команды. Таким образом, линия с +
впереди все равно будет запущена.
Если вы читали официальное руководство по Gnu Make, все они упоминаются в главе 5 . В моем старом экземпляре руководства это была глава, посвященная «командам», но теперь термин du jour, кажется, означает «рецепты».