2009-06-04 25 views
5

コンパイル中の言語に対して有効でないパラメータについてのgcc警告を無効にするオプションがあるかどうか不思議です。互換性のないオプションのgcc警告を無効にする

例:

cc1: warning: command line option "-Wno-deprecated" is valid for C++/Java/ObjC++ but not for C 

私たちのビルドシステムは、当社がグローバルビルド渡っに決めた警告を渡します。 私たちはC/C++コードを持っており、警告は実際の警告を見つけようとすると実際に迷惑になります。

提案がありますか?

+0

IMHOこれは、Makeレベルで最もよく解決されます。どのソースファイルがCで、どちらがC++であるかわかりますか? –

答えて

2

このようなオプションがある場合、そのオプションについての警告を無力化するためのオプションが無限にある必要があります。だから私はないと思う。

全く異なる言語のビルドに同じオプションを使用すると、ちょっと奇妙に思えます。私はmakefileマクロとして定義されたさまざまなオプションを持ち、異なるターゲットに適切に使用します。

+0

私はそれが外部者にとって奇妙に見えることを実感します。私はビルドシステムを担当していない、私はそれをきれいにしようとしている。私は本当に二人の分離をする力はありません。 –

0

Alas gccには個々の警告をオンまたはオフにする機能がありません。警告には特別なケースがあり、警告レベルは設定できますが、気にしない警告は無効にすることはできません。

ファイルの最後に空白行がないことに誰が気にするのでしょうか?私はそれをオフにするパッチがあることを知っているが、源から私のコンパイラを構築することはあまりにも多すぎる。

ビルドシステムでは、言語ごとに別々の警告セットを定義できます。 gccではなく他のコンパイラを使用する必要がある場合はどうなりますか?

+0

私たちのビルドシステムは、実際には複数のコンパイラをサポートしています。 6つの異なるアーキテクチャー間でGCCが古いCコードをコンパイルするのが端です。 - >なぜ私は質問しましたか? –

3

gccの-Wxxxxで特定の警告を有効にすると-Wno-XXXXでそれらを無効にします。 GCC Warning Optionsから

あなたは警告をオフにする-W', for example -Wimplicit to request warnings on implicit declarations. Each of these specific warning options also has a negative form beginning -Wno-」を開始オプションを持つ多くの特定の警告を要求することができます。たとえば、-Wno-implicitです。このマニュアルには、デフォルトではない2つの書式のうち1つのみが記載されています。

ただし、@Neilは別の言語のオプションを分離することについて正しいです。 makeを使用している場合は、たとえばすべてのCオプションをCFLAGSに入れ、すべてのC++オプションをCCFLAGSに入れます。

+0

警告オプションは警告を生成していますが、私はそうではないと思います。 –

0

あなたのC言語ファイルをコンパイルする場合は、あなたのためのオプションである-x c++です。

+0

これは非常に悪い考えですが、彼らは*巨大なlibstdC+++を持ち込みます* – ismail

2

CFLAGS変数を設定すると、Cファイルのみが有効になります.CXXFLAGS変数を設定すると、C++ファイルのみが有効になり、ロジックを簡単に分離できます。

+0

彼のメークファイルによって異なります –

+0

実際それはあります。 – ismail

関連する問題