2016-05-24 14 views
3

Ich benutze Clang 3.8 zum kompilieren eine Datei, die von einer anderen Quelle in einem Projekt kommt. Dies ist eine temporäre Krücke, da diese Datei eine Ergänzung zu einer Bibliothek ist, die ich auch verwende, und der Code, den sie hat, wird Teil der nächsten Version dieser Bibliothek sein. Diese Menschen entwickeln sich jedoch mit weniger strengen Warnflaggen als ich.Wie kann ich alle Warnungen für eine einzelne Datei mit Clang 3.8 deaktivieren?

Ich bin nicht an diesen Warnungen interessiert, da sie gutartig sind, ich führe diese Datei nicht, und sie wird innerhalb weniger Monate verschwinden. Natürlich kann ich eine oder zwei Warnungen selektiv entfernen, aber ich denke, dass es in diesem Fall sinnvoller ist, alle Warnungen zu deaktivieren, weil ich später die Warneinstellungen meines Projekts ändern könnte und mehr Vorkommen herauskommen könnten es.

Ich habe versucht #pragma clang diagnostic ignored "-Weverything", aber Clang warnt, dass -Weverything ist eine unbekannte Warngruppe.

Wie kann ich Clang bitten, keine Warnungen für diese Datei zu generieren?

Antwort

3

Tatsächlich ist das "-Weverything" keine Gruppe von Warnungen, sondern nur eine spezielle Option, die an den Compiler übergeben wird. Hier ist Code, der diesen Fall behandelt: lib/Basic/Warnings.cpp:118

noch Sie können Ihre problematische Quelldatei mit etwas anderen Regeln/Flags kompilieren, wie Sie für andere Quellen verwenden:

clang -Wno-everything foo.c 

aber ich würde empfehlen, die jeweils zu deaktivieren Warnung explizit mit #pragma.

Wenn Sie alle Warnungen deaktivieren und dann Ihren Compiler aktualisieren, können Sie einige neue Warnungen verpassen, die wichtig sein könnten (z. B. undefinierte Verhaltensprüfungen, Sicherheitsüberprüfungen usw.).

Stellen Sie sich auch vor, was passiert, wenn die Datei nicht nach drei Monaten verschwunden ist, sondern für immer im Projekt bleibt.

+2

Die fragliche Datei ist LLVMs MemorySSA-Pass. Wenn es ein Problem damit gibt, besteht die Möglichkeit, dass ich mich nicht qualifiziert fühle, es zu beheben. Ich bin mir auch nicht sicher, ob ich es selbst aus Baum heraus behalten könnte, wenn es fallen gelassen würde. – zneak

+2

Mit anderen Worten, wenn die Datei nicht in drei Monaten verschwunden ist, habe ich viel schlimmere Probleme als ein paar Warnungen;) – zneak

+1

Wenn Sie es für z. enthaltene Header verwenden '#pragma clang diagnostic ignored" -Weverything "' –

Verwandte Themen