8

automake でファイルごとにフラグを設定する方法はありますか?
特に、c++ プロジェクトがあり、特定の警告を無効にしたいファイルを除くすべてのファイルを -WAll でコンパイルしたい場合、どうすればよいでしょうか?

私は次のようなものを試しました:

CXXFLAGS = -WAll ...
bin_PROGRAMS = test
test_SOURCES = main.cpp utility.cpp
utility_o_CXXFLAGS = $(CXXFLAGS) -Wno-unused-value

しかし、うまくいきませんでした。

編集済み: automake マニュアルへの参照を削除しましたが、これは実際には誤解を招くものでした (Douglas Leeder に感謝)。

4

3 に答える 3

17

automake...でこれを行うことはできませんが、 = で行うことができmakeます。次の行を に追加しますMakefile.am

utility.$(OBJEXT) : CXXFLAGS += -Wno-unused-value

詳細については、 GNU Make documentation : Target-specific Variable Valuesを参照してください。

于 2012-09-11T13:53:39.613 に答える
6

オブジェクトごとのフラグが必要な場合、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
于 2008-10-14T14:34:54.270 に答える
2

あなたは混乱しています - そのセクションは automake 自体のオプションについて言及しています。

これは、automake コマンドライン オプションを設定する方法です。

-W CATEGORY --warnings=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 は、未使用の変数に関する警告を非表示にします。

デフォルトで出力されるカテゴリは、「構文」と「サポートされていない」です。さらに、'gnu' と '移植性' は --gnu と --gnits の厳密性で有効になります。

環境変数 WARNINGS には、有効にするカテゴリのカンマ区切りリストを含めることができます。コマンドラインが切り替わる前に考慮されます。このように、-Wnone は WARNINGS によって有効化された警告カテゴリも無視します。この変数は、autoconf などの他のツールでも使用されます。このため、不明なカテゴリは無視されます。

セクション 17 にリストされているファイルごとは、ソース ファイルではなく Makefile ごとを指します。

ソースファイルごとのフラグ設定については知りませんが、各結果バイナリのオプションを次のように設定できます。

binaryname_CXXFLAGS
于 2008-09-29T17:00:16.367 に答える