2014-09-19 124 views
1

我對於使用autotools還很陌生,我仍在學習。如何設置autotools默認的C++編譯標誌

因此,正如我的主題標題所述,我想知道如何設置編譯標誌。

我知道已經有已在此一topic但它並沒有解決我的問題:

我用:

... 
AC_SUBST([AM_CXXFLAGS], [-Wall -Werror]) 
... 

但不幸的是,使用./configure當我得到:

... 
./configure: line 3436: -Wall: command not found 
... 

因此它生成Makefiles但沒有目標

預先感謝您的任何幫助

+2

其實我還沒有找到一個與autotools功能相匹配的項目,所以我不能同意上面的評論。 – 2014-09-20 18:58:36

回答

2

The answer provided by Idav1s作品我也是因爲

AC_SUBST([FOO], [BAR QUUX]) 

擴展爲以下shell代碼:

FOO=BAR QUUX 
它運行QUUX設置爲BAR的FOO環境變量

。在你的情況下,這意味着AM_CXXFLAGS設置爲-Wall,並且執行-Werror。爲什麼你看到-Wall執行,而不是不明給我...對我來說,上線2802發生的錯誤:

configure: line 2802: error: -Werror not found 

所以,我打開了configure腳本,我發現了什麼是在線2802 AM_CXXFLAGS=-Wall -Werror。在configure.ac中將其更改爲['-Wall -Werror']修復了我的問題。

Autotools構建系統是非常便攜的,它使得交叉編譯比一些構建系統更容易(例如Cmake需要一個帶有特殊變量集的工具鏈文件)。我不會建議切換構建系統,而是解決這樣一個簡單的問題。

0

Makefile.am設置它們來代替:

AM_CXXFLAGS = -Wall -Werror 
+0

謝謝你的回答,但是在configure.ac文件中完全沒有辦法設置它嗎? – BigFoot 2014-09-20 10:04:59

1

這個工作對我來說:

configure.ac

... 
AC_SUBST([AM_CXXFLAGS], ["-Wall -Werror"]) 
...