В руководстве по сборке GNU Makefile упоминаются эти префиксы.
Если указан .ONESHELL, то только первая строка рецепта будет проверяться на наличие специальных префиксных символов ('@', '-' и '+').
Что делают эти префиксы и где они упоминаются?
В руководстве по сборке GNU Makefile упоминаются эти префиксы.
Если указан .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, все из которых в основном говорят сделать на самом деле не запускать команды. Так что в +любом случае линия с передней частью будет проложена.
Если вы прочитали официальное руководство по Gnu Make, все они упомянуты в главе 5 . В моей старой копии руководства, которая была главой о «командах», но термин du jour теперь кажется «рецептами».