2012-08-10 58 views
21

我使用AX_CXX_COMPILE_STDCXX_0X(可以查看autoconf-archive)來檢查編譯器的C++ 11功能。它正確地確定需要-std=c++0x,但不會將其添加到CXXFLAGS。我看了一下宏源,它實際上檢查,但是然後恢復以前的標誌。Autotools檢查C++ 11

我應該怎麼做才能將CXXFLAGS設置爲能夠編譯C++ 11的源代碼?

只需將-std=c++0x添加到AM_CXXFLAGS不是很好的解決方案,因爲我想把編譯器編譯爲C++ 11模式的負擔讓autoconf開發人員,而不是我。

回答

28

您正在尋找的東西已經被作爲AX_CXX_COMPILE_STDCXX_11,作爲autoconf-archive的一部分。它將向環境中添加所需的選項(以前通過CXXFLAGS,現在通過CXX),如果沒有可用的C++ 11支持,則會出錯。

+0

'configure.ac:15:錯誤:AC_LANG_ASSERT:當前語言不是C++:C ../../lib/autoconf/lang.m4:156:AC_LANG_ASSERT從... M4/ax_cxx_compile_stdcxx_11擴大。 m4:48:AX_CXX_COMPILE_STDCXX_11從... configure.ac:15:最高級別 autom4te:/ usr/bin/m4失敗,退出狀態:1 aclocal:錯誤:/ usr/bin/autom4te失敗,退出狀態:1 autoreconf:aclocal失敗,退出狀態:1' 我把它放在'AC_PROG_CXX'之後。我做錯了什麼? – KAction 2012-08-11 05:10:21

+0

對不起,對於長評論。我找不到格式化它的方法。好吧,我在'AX_CXX_COMPILE_STDCXX_11'之前加了AC_LANG([C++]),但我認爲它是由'AC_PROG_CXX'調用的。 – KAction 2012-08-11 05:16:36

+1

@illusionoflife'AC_PROG_CXX'不應該這樣做,因爲它會搞亂配置同時具有C和C++檢查的腳本。大多數autoconf檢查依賴於C.添加AC_LANG是正確的。 – hvd 2012-08-11 08:53:01