У посібнику з 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; -
описано в § 5.5 ; в пункті 5.7.1 згадується використання +
.)
@
не дозволяє командному рядку відлунювати до консолі. Ви можете зробити це в усьому світі за допомогою -s
або--keep-silent
-
повідомляє make продовжувати, навіть якщо команда з якоїсь причини відмовиться. Ви можете зробити це в усьому світі за допомогою -i
прапора (або --ignore-errors
).
+
Я не був знайомим, перш ніж ти запитав. Наскільки я можу сказати, що зводить на немає ефект -n
, -t
і -q
, всі з яких в основному говорять зробити насправді не запускати команди. Таким чином, лінія з +
фронтом хотіла б пробігти все одно.
Якщо ви читаєте офіційний посібник з Gnu Make, всі вони згадуються у розділі 5 . У моєму старовинному примірнику посібника, який був розділом про "команди", але термін du jour зараз, здається, "рецепти".