2015-10-29 18 views
5

での#pragma使用-Werrorを無効にする方法を、私はすべての警告をエラーとして扱うためにはgccを伝えるために-Werrorを使用し始めています。時々私は、大きなビルド出力内の1つまたは2つ(深刻な)警告を逃したとしては、選択的に警告無料のアプリケーションへの私の探求ではgcc

これは確かに非常に便利です。 残念ながら、私のプロジェクトでは、sqlite3を使用しています。これには、sqlite Webサイトに記載されているように、削除したくないという警告が多く含まれています。

私は、そのファイルのエラーと警告を処理することを停止するためのgccを伝えるためにsqlite3.cファイルに入れることができますいくつかの#pragmaを使用する方法があります場合、私は思っていました。

#pragma GCC diagnostic ignored "-Wextra" 
#pragma GCC diagnostic ignored "-Wfloat-equal" 
#pragma GCC diagnostic ignored "-Wundef" 
... 

...残念ながら、いくつかの警告がある:なし成功 と

#pragma GCC diagnostic ignored "-Werror" 

私もして問題を引き起こす警告を1枚ずつ一覧表示することを試みた:

は、私が試しました完全に無効にすることはできません(つまり、初期化はポインタターゲットタイプから修飾子を破棄します)。

アイデア/提案はありますか?

答えて

2

のメイクファイルに追加のルールを追加して、-Werrorを付けずにファイルをコンパイルするか、まったく警告しなくてもかまいません。通常の慣習では、このようなもので十分かもしれません:

sqlite3.o: sqlite3.c 
    $(CC) $(CFLAGS) -w -c sqlite3.c 
+0

は、私は残念ながら、私はautoconfの/ automakeをを使用している、そのことを考えて...、それはすでにかなり厄介です。 ./configure中に警告(および-Werror)が選択されるので、ホストターゲットのデバッグバージョンをビルドするときに有効にすることができます。ターゲット(組み込みLinux)システムのビルド時に警告が無効になります。 – fabrizi0

+0

@ fabrizi0特定のファイルに対して 'automake'を使って特別なルールを追加することは問題ありません。私はそれに慣れていませんが、正確にこれを行う方法については、そのドキュメントを参照する必要があります。また、これを[tag:automake]とタグ付けして、その行に沿って回答を受け取る場合は、-Werrorを無効にする方法や、あるファイルに対して-wを指定する方法を指摘するために質問を編集してください。 – fuz

+0

FUZxxl:残念ながら私はautomakeがper-objectフラグのみをターゲットフラグでサポートしているとは思っていませんでした。この記事でも述べたように:http://stackoverflow.com/questions/149324/setting-per-file-flags-with-automake私はファイルごとにそれを行う良い方法がない場合、私はsqliteのlibを作成し、それに対して私のアプリケーションをリンクする必要があります。 – fabrizi0

関連する問題