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

War es hilfreich?

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 Ihre CFLAGS 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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top