Come formattare / cambiamento qmake costruire uscita
Domanda
come posso formattare l'output make ( !! soltanto modificando il file di progetto qmake !! ). Le mie linee di compilazione continuare a crescere, e l'uno-line-avvertimenti / errori quasi scompaiono tra di loro.
Sto pensando a qualcosa di simile
$(CC) in.ext -o out.ext
grazie per quanto riguarda
Soluzione
In qmake
, è possibile aggiungere un'opzione di configurazione invisibile:
CONFIG += silent
(nota:.. Penso che questo sia il comando E 'qualcosa di simile a questo)
Che dovrebbe sopprimere la maggior parte della produzione, e solo le linee di stampa come "la compilazione A. Ó", insieme con i vostri avvisi e gli errori. Credo che questo sia simile a quella direttiva make
di .SILENT.
(credo che sia quello ...)
Si consiglia di prestare attenzione a questo, però, perché sopprime un sacco di informazioni che parser errore piace usare. Ad esempio, se si sta compilando con una configurazione SUBDIRS
, esso non stamperà quando cambia alle diverse directory.
Altri suggerimenti
Ci sono diversi approcci. E potete farli configurabile.
- Se Aggiungi segno
@
di fronte alla riga all'interno regola, il comando stesso non verrà stampato, ma la sua produzione sarà. - Se Aggiungi
-Werror
al tuoCFLAGS
variabile (ne avete uno, non si tratta di una pratica comune?!), Sicuramente sarà non perdere alcun preavviso - la compilazione si ferma dopo il primo. - Puoi reindirizzare lo standard output del comando per
/dev/null
, lasciando solo flusso di errore (questo non è per il vostro caso particolare, perché gcc di solito non produce in uscita, ma può essere utile per gli altri comandi) .
Purtroppo, per qmake
vale 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 sarà spostato ad un'altra domanda appare appena un uno).
Per solito fanno è possibile utilizzare tutto - si può fare tutto configurabile! Ecco l'esempio:
trace?=short
ifeq ($(trace),short)
suppress_echo=@
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 l'operatore ?=
invece di solito =
!) E le regole si espanderà a tale versione
out.ext: out.o
@echo cc -o out.ext 1>/dev/null
@cc -o out.ext out.o 1>/dev/null
quello che darà molto di cui hai bisogno.
Tale approccio, con la configurazione, è utilizzato nel codice di produzione. Ad esempio, ho visto in makefiles IcedTea di Ubuntu.
È possibile sopprimere la stampa con '@' e l'eco che cosa si vuole vedere:
Semplice esempio:
out.ext: $(OBJ)
@echo $(CC) -o out.ext
@$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC)