Cosa fanno @, - e + come prefissi alle righe della ricetta in Make?


172

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:


235

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 +.)


41

@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".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.