Dans le manuel GNU Makefile, il mentionne ces préfixes.
Si .ONESHELL est fourni, alors seule la première ligne de la recette sera vérifiée pour les caractères de préfixe spéciaux ('@', '-' et '+').
Que font ces préfixes et où sont-ils mentionnés?
Ils contrôlent le comportement de make pour les lignes de commande balisées:
@
supprime l '«écho» normal de la commande exécutée.
-
signifie ignorer le statut de sortie de la commande qui est exécutée (normalement, un statut de sortie différent de zéro arrêterait cette partie de la construction).
+
signifie 'exécuter cette commande sous make -n
' (ou 'make -t' ou 'make -q') lorsque les commandes ne sont pas normalement exécutées. Voir aussi la spécification POSIX make
et aussi le §9.3 du manuel GNU Make.
La +
notation est une généralisation (standardisée POSIX ) du mécanisme de facto (non standardisé) par lequel une ligne de commande contenant ${MAKE}
ou $(MAKE)
est exécutée sous make -n
.
( @
est discuté au §5.2 du manuel GNU Make; -
est décrit au §5.5 ; et le §5.7.1 mentionne l'utilisation de +
.)
@
empêche la ligne de commande de se répercuter sur la console. Vous pouvez le faire globalement avec -s
ou--keep-silent
-
dit à make de continuer, même si la commande échoue pour une raison quelconque. Vous pouvez le faire globalement via le -i
drapeau (ou --ignore-errors
).
+
Je n'étais pas familier avec avant que vous ne demandiez. Pour autant que je sache, il annule l'effet de -n
, -t
et -q
, qui tous disent essentiellement faire de ne pas exécuter réellement les commandes. Donc, une ligne avec un +
à l'avant serait exécutée de toute façon.
Si vous lisez le manuel officiel de Gnu Make, ils sont tous mentionnés au chapitre 5 . Dans mon ancien exemplaire du manuel, c'était le chapitre sur les "commandes", mais le terme du jour semble maintenant être des "recettes".