Dans le manuel GNU Makefile, il mentionne ces préfixes.
Si .ONESHELL est fourni, 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 marquées:
@
Supprime l'écho normal de la commande qui est exécutée.
-
Signifie ignorer l'état de sortie de la commande qui est exécutée (normalement, un état 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 également la spécification POSIX pour make
et aussi §9. du manuel GNU Make).
La notation +
Est une généralisation (normalisée POSIX) du mécanisme de facto (non normalisé) par lequel une ligne de commande contenant ${MAKE}
Ou $(MAKE)
s'exécute sous make -n
.
(@
Est discuté dans §5.2 du GNU Make manual; -
Est décrit dans §5.5 ; et §5.7.1 mentionne l'utilisation de +
.)
@
empêche la ligne de commande de résonner sur la console. Vous pouvez le faire globalement avec -s
ou --keep-silent
-
indique à 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 ne vous connaissais pas bien avant de demander. Pour autant que je sache, cela annule l'effet de -n
, -t
, et -q
, qui indiquent essentiellement à make de ne pas réellement exécuter les commandes. Donc, une ligne avec un +
à l'avant serait exécuté de toute façon.
Si vous lisez le manuel officiel de Gnu Make, ils sont tous mentionnés dans Chapitre 5 . Dans mon ancien exemplaire du manuel qui était le chapitre sur les "commandes", mais le terme du jour semble désormais être "recettes".