Wie zu formatieren / Änderung QMake Ausgabe bauen
Frage
Wie kann ich die Marke Ausgabe zu formatieren ( !!, indem nur die qmake-Projektdatei zu ändern !! ). Meine Kompilation Linien weiter zu wachsen und die einzeilige-Warnungen / Fehler fast verschwinden zwischen ihnen.
Ich denke an so etwas wie
$(CC) in.ext -o out.ext
Vielen Dank im Hinblick
Lösung
In qmake
können Sie eine stille Konfigurationsoption hinzufügen:
CONFIG += silent
(beachten Sie:.. Ich denke, das ist der Befehl Es ist etwas ähnlich wie diese)
Welche sollten die meisten der Ausgabe und nur Druckzeilen wie „Kompilieren a.o“, zusammen mit Ihren Warnungen und Fehler zu unterdrücken. Ich glaube, diese make
Richtlinie .SILENT.
die ähnlich ist (ich glaube, das ist das einzige ...)
Sie möchten mit dieser vorsichtig sein, aber, weil es eine Vielzahl von Informationen unterdrückt, dass Fehler Parser verwenden möchten. Zum Beispiel, wenn Sie mit einer SUBDIRS
Konfiguration kompilieren, wird es nicht drucken, wenn es um die verschiedenen Verzeichnisse ändert.
Andere Tipps
Es gibt verschiedene Ansätze. Und Sie können sie konfigurierbar machen.
- Wenn Sie hinzufügen
@
Zeichen vor der Linie in der Regel der Befehl selbst wird nicht gedruckt, aber die Ausgabe wird. - Wenn Sie
-Werror
auf IhreCFLAGS
hinzufügen Variable (Sie keine haben, nicht wahr Es ist eine gängige Praxis?!), Werden Sie auf jeden Fall keine Warnung verpassen - die Build stoppt nach dem ersten. - Sie können Umleitung der Standardausgabe des Befehls
/dev/null
, nur Fehlerstrom verlassen (dies ist nicht für Ihren speziellen Fall, weil gcc in der Regel nicht ausgegeben hat ergeben, sondern kann für andere Befehle hilfreich sein) .
Leider ist für qmake
nur der zweite Ansatz gilt. In der Projektdatei:
QMAKE_CFLAGS+=-Werror
QMAKE_CXXFLAGS+=-Werror
Und die Makefiles erzeugt werden diese Flags verwenden, wenn sie Compiler aufrufen, so dass der Build bei jeder Warnung zu stoppen.
(dieser Abschnitt wird auf eine andere Frage bewegt werden, sobald ein ein angezeigt wird).
Für gewöhnlich machen Sie alles verwenden können - Sie können es alle konfigurierbar machen! Hier ist das Beispiel:
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)
Also, wenn Sie rufen make
wie folgt aus:
$ make trace=full
es wird alles drucken. Wenn Sie aufrufen
$ make
der short
Wert wird standardmäßig verwendet werden (man beachte den ?=
Operator anstelle des üblichen =
!) Und die Regeln werden auf diese Version erweitern
out.ext: out.o
@echo cc -o out.ext 1>/dev/null
@cc -o out.ext out.o 1>/dev/null
, was viel geben, wie Sie benötigen.
Ein solcher Ansatz, mit Konfiguration wird im Produktionscode verwendet. Zum Beispiel sah ich es in Ubuntu IcedTea Makefiles.
Sie können den Ausdruck mit ‚@‘ unterdrücken und wiederholen, was Sie sehen wollen:
Einfaches Beispiel:
out.ext: $(OBJ)
@echo $(CC) -o out.ext
@$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC)