TL; DR:特定のフラグセットで外部ライブラリをコンパイルすると、ヘッダーをインクルードするときに自分のコードをコンパイルするために使用されるフラグによって引き起こされる警告をどう対処できますかこのライブラリ?autotoolsとスタティックライブラリを使用した特定のコンパイルフラグ
私はプロジェクトのビルドシステムとしてautotoolsを使用しています。ターゲットに応じてコンパイルフラグを適切に設定したいと思います。
何らかの高レベルの警告(コンパイラからのデバッグ/バグの防止の助けがあればいつでも歓迎します)で自分のソースをコンパイルしたいと思います。 現在使用されている警告フラグには、例として取り上げる-Wsuggest-override
があります。私の情報源以外にも、私が持っている
私はのはの情報ページには二つの別々のフラグのセット、 を持っているために-Ofast
としましょう、とコンパイルしたいの外部ライブラリ(あなたが本当に知りたい場合pugixml
) automake
具体的な例がある興味深いセクションPer-Object Flags: How to simulate per-object flags?があります。 (トピックに関するいくつかのSOの質問もあります)
私Makefile.am
に以下が存在しない理由です:
__top_srcdir__bin_LDADD = libpugixml.a
noinst_LIBRARIES = libpugixml.a
libpugixml_a_SOURCES = pugixml/pugixml.cpp
libpugixml_a_CPPFLAGS = -Ofast
プログラムソースのセットは、もはや、ライブラリのソースが含まれています
__top_srcdir__we_SOURCES = main.cc
これはうまくいきます。ライブラリはフラグのセットでビルドされています。私のソースは別のものですが、すべてがOKです...
まで私の情報源でライブラリのヘッダと、私はこれを掲示しています理由です(長すぎる?)質問
main.cc:
#include <pugixml/pugixml.hpp> // -Wsuggest-override triggered
int main() { return 0; }
コンパイル時には、-Wsuggest-override
は、ライブラリのソースでトリガされ
公式automake
の解決策は、このケースでは適用されない異なる警告セットを持っていますか、何か間違っていますか?
automake
バージョン (気分に応じて)私はそれが重要かどうかわからないが、私はg++
および/またはclang
を使用しています:あなたの助けのための1.15
おかげautomakeは(GNUのautomakeは)
+1、あなたの答えをありがとう。私はautomakeに "このヘッダーがこのライブラリに属しているので、もしそれが含まれていれば、適切なフラグを使用してください"と言う方法がないのだろうかと疑問に思っていた。 – Zermingore
OK、残念ながら、答えは「いいえ、automakeはできません。 – ldav1s