Nel manuale di GNU Makefile, menziona questi prefissi.
Se viene fornito .ONESHELL, solo la prima riga della ricetta verrà controllata per i caratteri prefisso speciali ('@', '-' e '+').
Cosa fanno questi prefissi e dove sono menzionati?
Nel manuale di GNU Makefile, menziona questi prefissi.
Se viene fornito .ONESHELL, solo la prima riga della ricetta verrà controllata per i caratteri prefisso speciali ('@', '-' e '+').
Cosa fanno questi prefissi e dove sono menzionati?
Risposte:
Controllano il comportamento di make per le righe di comando taggate:
@
sopprime la normale "eco" del comando eseguito.
-
significa ignorare lo stato di uscita del comando che viene eseguito (normalmente, uno stato di uscita diverso da zero fermerebbe quella parte della build).
+
significa "esegui questo comando in make -n
" (o "make -t" o "make -q") quando i comandi non vengono normalmente eseguiti. Vedi anche le specifiche POSIX per make
e anche §9.3 del manuale di GNU Make.
La +
notazione è una generalizzazione (standardizzata POSIX ) del meccanismo di fatto (non standardizzato) in base al quale una riga di comando contenente ${MAKE}
o $(MAKE)
viene eseguita sotto make -n
.
( @
è discusso nel §5.2 del manuale di GNU Make; -
è descritto nel §5.5 ; e §5.7.1 menziona l'uso di +
.)
@
impedisce alla riga di comando di echeggiare alla console. Puoi farlo globalmente con -s
o--keep-silent
-
dice a make di continuare, anche se il comando fallisce per qualche motivo. Puoi farlo a livello globale tramite la -i
bandiera (o --ignore-errors
).
+
Non avevo familiarità con prima che tu me lo chiedessi. Da quanto posso dire, annulla l'effetto di -n
, -t
e -q
, ognuno dei quali in sostanza dire make a realtà non eseguire i comandi. Quindi una linea con +
a davanti verrebbe comunque eseguita.
Se leggi il manuale ufficiale di Gnu Make, sono tutti menzionati nel Capitolo 5 . Nella mia vecchia copia del manuale che era il capitolo sui "comandi", ma il termine du jour ora sembra essere "ricette".