2013-01-10 22 views
1

我想在自動工具項目中使用-Wall-Werror作爲gcc的標誌,但我不想將它們放在configure.ac中。使用-Wall運行./configure會導致找不到庫

因此,我嘗試使用./configure CFLAGS='-Wall -Werror',只能從我的AC_SEARCH_LIBS宏調用一個得到一個錯誤:

AC_SEARCH_LIBS([pow], [m], , AC_MSG_ERROR([Could not find standard math library.])) 

運行與CFLAGS配置時產生的錯誤說:

configure: error: Could not find standard math library. 

什麼我在這裏做錯了嗎?沒有CFLAGS變量集,配置工作正常。

+2

檢查您的配置日誌文件中是否存在嘗試運行該步驟的輸出。你會看到錯誤是什麼,可以修復它。 –

+0

日誌文件告訴我:錯誤:嘗試編譯conftest.c後,內建函數'pow'[-Werror]'的衝突類型。刪除 - 來自CFLAGS的錯誤消除了這個問題,但這對我來說並沒有什麼用處。 – heuristicus

+0

http://permalink.gmane.org/gmane.comp.sysutils.autoconf.patches/5791 –

回答

2

正如您現在所知,將編譯警告提升爲錯誤會混淆./configure

你可以做的是在make時間定製CFLAGS傳:

$ ./configure 
$ make CFLAGS='-O2 -g -Wall -Wextra -Werror' 

另一種選擇是威廉Pursell的方法:添加一個選項./configure打開-Werror如果支持的話:

(配置。 AC)

AC_ARG_ENABLE([werror], 
       [AS_HELP_STRING([--enable-werror], [Use -Werror @<:@[email protected]:>@])], 
       [:], 
       [enable_werror=no]) 
AM_CONDITIONAL([ENABLE_WERROR], [test "$enable_werror" = yes]) 

(Makefile.am)

if ENABLE_WERROR 
AM_CFLAGS += -Werror 
endif 
相關問題