Ich verwende SCons, um ein Projekt bei der Arbeit zu erstellen, und ich versuche, durch die Textausgabe von GCC zu analysieren, um einen zusammenfassenden Bericht aller Compilerwarnungen zu erstellen jedes Ziel, weil unsere Build-Skripte ziemlich lang sind und es eine Menge Textausgabe an die Konsole gibt.SCONS: Speichern/Redirect gcc Textausgabe (Warnungen)
Ich habe Google und diese Website für eine ganze Weile durchsucht, und ich kann eine Methode nicht finden, die in SCons integriert ist, um dies zu erreichen. Ich habe versucht, den gesamten stdout und stderr-Strom in eine Datei per this example umzuleiten, aber nur die Ausgabe von SCons selbst wird erfasst und nicht die von irgendwelchen Werkzeugen, die es anruft.
Mein nächster Gedanke war zu finden, wo SCons die Argumente kompiliert, um an GCC zu senden und Umleitung an dem Ende der Argument-Zeichenfolge hinzuzufügen. Nach dem Lesen der Dokumentation scheint es, dass die Konstruktionsvariablen CCCOM
und CXXCOM
die Befehlszeile zum Kompilieren enthalten. Als ich jedoch die Zeilen unten zu meinem SConstruct hinzugefügt habe, hat sich in den Befehlszeilen, die SCons ausführt, nichts geändert.
baseEnv['CCCOM'] += " 2> gcc-c-output.txt"
baseEnv['CXXCOM'] += " 2> gcc-cxx-output.txt"
Eine Sache, die Arbeit getan wurde auf dem gesamten SCons Befehl Stderr Strom umleiten:
scons 2> stderr.txt
Ich mag würde dies zu vermeiden, aber, und enthalten alles, was innerhalb SCons, wenn möglich. Die Ausgabe muss auch nicht unbedingt in eine Datei gehen. Es kann überall gespeichert werden, solange ich darauf zugreifen kann, um es am Ende des Builds zu parsen und in einer Datei zu speichern.
Ich habe so lange gesucht und nichts gefunden, also weiß ich nicht, was ich sonst noch versuchen sollte. Ich muss glauben, dass ich nicht der Erste bin, der so etwas machen wollte.
ich diese Variablen kennen, sind tatsächlich die Befehle verwendet, die kompilieren ist, warum ich Ich dachte, sie wären gute Kandidaten, um sie zu modifizieren, aber SCons scheint meine Modifikationen zu ignorieren. Ich habe sogar versucht, ihre Werte auf eine leere Zeichenfolge zu setzen, und es wurde trotzdem gut zusammengestellt. Ich habe das Gefühl, dass etwas nicht stimmt, weil ich es erwähnt habe, diese Variablen zu ändern, während ich nach einer Lösung suche. Ich dachte jedoch nicht daran, die ausführbaren GCC-Dateien zu verpacken. Ich werde diese Option untersuchen, während ich auf eine möglicherweise mehr SConsy Antwort warte. – EarlCrapstone
@EarlCrapstone, Ich bin mir ziemlich sicher, dass sich der Wert dieser 2 Variablen für jede kompilierte cc-Datei ändert (überschrieben wird), also bin ich nicht überrascht, dass deine Mods nichts getan haben. Versuchen Sie es stattdessen mit CC und CXX und diese werden tatsächlich einen Unterschied machen. Ich habe sie geändert, um einen anderen Compiler zu spezifizieren, und das funktioniert. – Brady
Ich habe herausgefunden, was ich falsch mache, aber da ich neu bin, kann ich meine Frage nicht für weitere vier Stunden beantworten. @Brady Diese Variablen werden während des Builds nicht geändert. Mein Problem war, dass ich shared-library-Objekte erstellte, also stattdessen 'SHCCCOM' und' SHCXXCOM' verwendete. – EarlCrapstone