私が取り組んでいるソフトウェア プロジェクトでは、悲しいことに、迷惑な gcc 警告を生成する特定のサード パーティ ライブラリを使用しています。警告のすべてのコードをクリーンアップするように努めており、GCC で警告をエラーとして扱う (-Werror) フラグを有効にしたいと考えています。これらのサードパーティによって生成された、修正できない警告を非表示にする方法はありますか?
4 に答える
使用-isystem
例:
gcc -I./src/ -isystem /usr/include/boost/ -c file.c -o obj/file.o
-isystem を使用すると、ブーストに関する警告はありません:D
CMake を使用している場合は、次のように追加することでこれを実現できSYSTEM
ますinclude_directories
。
include_directories(SYSTEM "${LIB_DIR}/Include")
^^^^^^
サードパーティのライブラリ ヘッダーからの警告について話していると思います。
GCC 固有の解決策は、基本的に次の 2 行を含む別のラッパー ヘッダー ファイルを作成することです。
#pragma GCC system_header
#include "real_3rd_party_header.h"
また、元のサードパーティ ヘッダーの代わりにラッパーを使用します。
プラグマの詳細を示す別の SO 応答を確認してください。基本的に、これ (再帰的にインクルードされたファイルを含む) はシステム ヘッダーであり、警告メッセージは生成されないことを GCC に伝えます。
そうでなければ、サードパーティのコードからの警告を無効にする方法がわかりません。もちろん、強引な手段を除いて: ビルド システムで、ファイルを警告なしでビルドするように構成します。
http://www.artima.com/cppsource/codestandards.html
例 1: サードパーティのヘッダー ファイル。変更できないライブラリ ヘッダー ファイルには、(おそらく無害な) 警告を発生させる構造が含まれている可能性があります。次に、元のヘッダーを #include する独自のバージョンでファイルをラップし、そのスコープに対してのみノイズの多い警告を選択的にオフにしてから、プロジェクトの残りの部分全体にラッパーを #include します。