質問
automakeでファイルごとにフラグを設定する方法はありますか?
特に、c ++プロジェクトがあり、特定の警告を無効にするファイルを除くすべてのファイルを-WAllでコンパイルしたい場合、どうすればよいですか?
次のようなものを試しました:
CXXFLAGS = -WAll ...
bin_PROGRAMS = test
test_SOURCES = main.cpp utility.cpp
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value
しかし、うまくいきませんでした。
編集済み:実際には誤解を招くようなautomakeマニュアルへの参照を削除しました(Douglas Leederに感謝します)。
解決
Automakeはターゲットごとのフラグのみをサポートしていますが、オブジェクトごとのフラグが必要です。 1つの方法は、オブジェクトを含む小さなライブラリを作成することです:
CXXFLAGS = -Wall ...
bin_PROGRAMS = test
test_SOURCES = main.cpp
test_LDADD = libutility.a
noinst_LIBRARIES = libutility.a
libutility_a_SOURCES = utility.cpp
libutility_a_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value
他のヒント
automake
でこれを行うことはできませんが、 make
でできる =)次の行をに追加しますMakefile.am
:
utility.$(OBJEXT) : CXXFLAGS += -Wno-unused-value
GNU Makeドキュメント:ターゲット固有の変数値をご覧ください。
混乱している-そのセクションはautomake自体のオプションについて言及している。
これは、automakeコマンドラインオプションを設定する方法です。
-Wカテゴリ --warnings = category カテゴリに該当する警告を出力します。 categoryは次のいずれかになります。
gnu warnings related to the GNU Coding Standards (see Top). obsolete obsolete features or constructions override user redefinitions of Automake rules or variables portability portability issues (e.g., use of make features that are known to be not portable) syntax weird syntax, unused variables, typos unsupported unsupported or incomplete features all all the warnings none turn off all the warnings error treat warnings as errors
カテゴリの名前の前に‘ no-’を付けると、カテゴリをオフにできます。 たとえば、-Wno-syntaxは非表示になります 未使用の変数に関する警告。
デフォルトで出力されるカテゴリは‘ syntax’です。および‘未サポート’。 さらに、‘ gnu’および‘ポータビリティ’ --gnuおよび--gnitsで有効になります 厳格さ。
環境変数WARNINGSには、カンマ区切りのリストを含めることができます 有効にするカテゴリ。取られます コマンドラインの前に考慮 このように切り替えます-Wnoneも によって有効にされた警告カテゴリを無視します 警告。この変数も使用されます autoconfのような他のツールによって。道の このカテゴリは無視されます 理由。
セクション17にリストされているファイルごとは、ソースファイルではなく、Makefileごとです。
ソースファイルごとのフラグ設定については知りませんが、次のようにして各結果バイナリのオプションを設定できます。
binaryname_CXXFLAGS