Es gibt zwei Möglichkeiten, Warnungen für externe Bibliotheken zu ignorieren, soweit ich das beurteilen kann.C++ - Compiler-Flag zum Ignorieren von Warnungen für externe Bibliotheken, aber ohne Verzeichnis
erster Weg ist #pragma
zu verwenden:
#pragma gcc diagnostic ignored "-Wunused-parameter"
zweiter Weg ist -isystem/path/to/system/lib
zu dem Compiler-Flags hinzuzufügen. Dadurch wird der Pfad als externer Include-Pfad gekennzeichnet, sodass der Compiler keine Warnungen aus diesen Includes ausgibt.
Ich habe ein großes Projekt mit vielen Kompilierungszielen, von denen einige spezielle Bibliotheken von Drittanbietern verwenden, die Probleme für meinen Compiler verursachen. Aus Gründen kann ich die Option #pragma
nicht verwenden.
Aber wenn ich die -isystem
als eine umfassende Compiler-Flag für alle Build-Ziele verwenden, dann werde ich leider /path/to/system/lib
für jedes andere Build-Ziel enthalten, auch diejenigen, die diese Systembibliothek nicht verwenden. Dies bedeutet, dass andere Ziele diese externen Bibliotheken durchsuchen werden, was nicht wünschenswert ist.
Gibt es eine Compiler-Option, ähnlich wie -isystem
, die in einer Decke Art und Weise hinzugefügt werden können, die nicht fügt den Suchpfad, aber nur schließt Warnungen, wenn der Pfad bereits im Suchpfad enthalten passiert werden?
Ich arbeite mit einer bestehenden Codebasis in einer Organisation und muss die Senior-Code-Prüfer, die angeben, dass ich nicht die Pragma-Lösung verwenden können. – Anton
Ich kann etwas fummelige Zauberei machen, um '-isystem' nur für relevante Ziele korrekt zu setzen, aber es wäre eine zeitaufwendigere Lösung, als ein Flag zu haben, das genau das tut, was ich brauche. Ich bin fast fertig mit der frechen CMake Zauberei, also sollte es in Ordnung sein, wenn es nicht so eine Flagge gibt ... – Anton