質問

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top