2008-09-29 42 views
7

是否有使用automake的每個文件的方式設置標誌?
特別是,如果我有一個C++項目,並且想用-WAll編譯除了要禁用特定警告的文件之外的所有文件,我該怎麼辦?使用automake設置每個文件的標誌

我想是這樣的:

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

,但沒有奏效。

編輯:刪除了參考automake手冊,這實際上是誤導(感謝Douglas Leeder)。

回答

5

的Automake只支持每個目標的標誌,而你想per-對象標誌。一種方法解決方法是創建一個包含你的對象一個小型圖書館:

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 
2

你有困惑 - 該部分指的是automake本身的選項。

它設定automake的命令行選項的方式:

-W類別 --warnings = 類輸出警告下降類別。類別可以是以下之一:

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'和'unsupported'。 此外,「gnu」和「便攜性」 在--gnu和--gnits 嚴格性中啓用。

環境變量WARNINGS可以包含要啓用的逗號分隔列表 類別。在命令行 開關之前將考慮 ,這種方式--WNONE也將 忽略由 警告啓用的任何警告類別警告。這個變量也被其他工具如autoconf用於 ;未知 類別因爲此 原因而被忽略。

第17節中列出的每個文件指的是per-Makefile而非源文件。

我不知道任何每源文件標誌設置的,但你可以爲每個結果的二進制的選項:

binaryname_CXXFLAGS 
13

你不能用automake做到這一點......但可以做make =)以下行添加到您Makefile.am

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

查看GNU Make documentation : Target-specific Variable Values瞭解詳情。

+0

現在的問題是相當老,但答案很有趣,不過,謝謝:) – 2012-09-11 16:30:33

相關問題