2011-06-10 58 views
2

我configure.ac包含的autoconf automake的和與-02與-O3

AC_PROG_CXX 

和我Makefile.am包含

AM_CXXFLAGS= -Werror -O3 

所得 '配置' 腳本不斷增加-02至除了O3的混合。

我有這種懷疑,我應該做一些configure.ac來聲明我的偏好爲O3,但我無法在文檔中找到它。我如何告訴它我想控制優化級別?

回答

5

不,你不應該添加任何東西到configure.ac來指示-O3的首選項。諸如此類的事情屬於一個用戶的CONFIG_SITE,而不是在configure.ac

但是,如果你堅持要打破慣例,你可以這樣做:

 
: ${CXXFLAGS=-Werror -O3} 

注意,這條線一定AC_PROG_CXX之前出現(或AC_REQUIRES的任何宏,例如LT_INIT,因爲這將導致AC_PROG_CXX在該行之前被髮射到配置腳本中。)

+2

我不明白。我有一個精心編寫的程序,以便與最大化的優化保持一致並從中受益。沒有辦法表達這一點? – bmargulies 2011-06-10 20:32:59

+2

如果沒有指定首選項,用戶需要使用-g -O2。修改CXXFLAGS是用戶的特權,而不是軟件包維護人員的權限。向AM_CXXFLAGS添加-Werror是可以的,但是優化級別必須留給用戶選擇。 – 2011-06-10 20:35:54

+0

關於最後一條評論的警告。如果您在配置中檢查CXX是否接受該選項,則只應在AM_CXXFLAGS中添加-Werror。並非所有的編譯器都這樣做,並且當編譯器不接受該選項時編譯失敗時用戶會非常惱火。 – 2011-06-10 20:39:42

4

以前的答案是正確的,因爲它應該是安裝程序的選擇使用哪些標誌。如果您仍然想知道-g -O2來自哪裏(可能),則在http://www.gnu.org/s/hello/manual/autoconf/C_002b_002b-Compiler.html處進行描述。

頁面確實提示「如果你的包不喜歡這個默認值,那麼在AC_INIT之後和AC_PROG_CXX之前選擇一個空的默認值,就可以插入''{$ CXXFLAGS =」「}」。