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 makee 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 -so--keep-silent
-dice a make di continuare, anche se il comando fallisce per qualche motivo. Puoi farlo a livello globale tramite la -ibandiera (o --ignore-errors).
+Non avevo familiarità con prima che tu me lo chiedessi. Da quanto posso dire, annulla l'effetto di -n, -te -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".