27

私が取り組んでいるソフトウェア プロジェクトでは、悲しいことに、迷惑な gcc 警告を生成する特定のサード パーティ ライブラリを使用しています。警告のすべてのコードをクリーンアップするように努めており、GCC で警告をエラーとして扱う (-Werror) フラグを有効にしたいと考えています。これらのサードパーティによって生成された、修正できない警告を非表示にする方法はありますか?

4

4 に答える 4

43

使用-isystem 例:

gcc -I./src/ -isystem /usr/include/boost/ -c file.c -o obj/file.o

-isystem を使用すると、ブーストに関する警告はありません:D

于 2012-07-26T13:38:35.080 に答える
18

CMake を使用している場合は、次のように追加することでこれを実現できSYSTEMますinclude_directories

include_directories(SYSTEM "${LIB_DIR}/Include")
                    ^^^^^^
于 2014-10-10T10:55:53.367 に答える
18

サードパーティのライブラリ ヘッダーからの警告について話していると思います。

GCC 固有の解決策は、基本的に次の 2 行を含む別のラッパー ヘッダー ファイルを作成することです。

#pragma GCC system_header
#include "real_3rd_party_header.h"

また、元のサードパーティ ヘッダーの代わりにラッパーを使用します。

プラグマの詳細を示す別の SO 応答を確認してください。基本的に、これ (再帰的にインクルードされたファイルを含む) はシステム ヘッダーであり、警告メッセージは生成されないことを GCC に伝えます。

そうでなければ、サードパーティのコードからの警告を無効にする方法がわかりません。もちろん、強引な手段を除いて: ビルド システムで、ファイルを警告なしでビルドするように構成します。

于 2010-07-22T12:15:05.850 に答える
3

http://www.artima.com/cppsource/codestandards.html

例 1: サードパーティのヘッダー ファイル。変更できないライブラリ ヘッダー ファイルには、(おそらく無害な) 警告を発生させる構造が含まれている可能性があります。次に、元のヘッダーを #include する独自のバージョンでファイルをラップし、そのスコープに対してのみノイズの多い警告を選択的にオフにしてから、プロジェクトの残りの部分全体にラッパーを #include します。

于 2010-07-22T12:12:41.060 に答える