Ci sono diversi approcci. E puoi renderli configurabili.
- Se si aggiunge
@
segno davanti alla riga all'interno regola, il comando stesso non verrà stampata, ma la sua uscita sarà.
- Se si aggiunge
-Werror
alla variabile CFLAGS
(ne avete uno, non è vero E 'una pratica comune?!), Sicuramente sarà non perdere alcun preavviso - la compilazione si ferma dopo il primo.
- È possibile reindirizzare l'output standard del comando su
/dev/null
, lasciando solo il flusso di errore (questo non è per il caso particolare, perché gcc di solito non produce output ma può essere utile per altri comandi).
Sfortunatamente, per qmake
si applica solo il secondo approccio. Aggiungere al file di progetto:
QMAKE_CFLAGS+=-Werror
QMAKE_CXXFLAGS+=-Werror
E i makefile generati utilizzerà queste bandiere quando invocano compilatore, in modo che il build fermarsi ad ogni avvertimento.
(questa sezione verrà spostata in un'altra domanda non appena ne viene visualizzata una).
Per il solito make puoi usare tutto - puoi renderlo tutto configurabile! Ecco l'esempio:
trace?=short
ifeq ($(trace),short)
[email protected]
redirect_to_null=1>/dev/null
else ifeq ($(trace),full)
suppress_echo=
redirect_to_null=
else ifeq ($(trace),werror)
CFLAGS+=-Werror
else
$(error Incorrect trace type "$(trace)"!)
endif
# Thanks to Martin York for the source of this copy-pasted code
out.ext: $(OBJ)
@echo $(CC) $(CFLAGS) -o out.ext $(redirect_to_null)
$(suppress_echo)$(CC) $(CFLAGS) -o out.ext $(OBJ) $(redirect_to_null)
Quindi, se si richiama make
in questo modo:
$ make trace=full
stamperà tutto. Se si richiama
$ make
il valore short
verrà utilizzato per default (notare il ?=
operatore invece di solito =
!) E le regole si espanderanno a tale versione
out.ext: out.o
@echo cc -o out.ext 1>/dev/null
@cc -o out.ext out.o 1>/dev/null
ciò che vi darà tanto quanto si bisogno.
Tale approccio, con configurazione, viene utilizzato nel codice di produzione.Ad esempio, l'ho visto nei makefile IcedTea di Ubuntu.
fonte
2009-09-29 11:51:52
fantastico. esattamente quello di cui avevo bisogno –