2012-05-03 68 views
1

emsr對此問題的回答:How can I specify that I want C++0x in Makefile.am?是我遇到問題的解決方案。人無我有一個新問題:我在哪裏可以放置更多自動工具宏?

我把宏定義爲M4/check.m4並相應地改變我的configure.ac:

AC_INIT([CppSs], [0.1], [[email protected]]) 
m4_include([m4/check.m4]) 
LT_INIT 

AC_CONFIG_SRCDIR([src/main.cc]) 
AC_CONFIG_HEADERS([config.h]) 
AC_CONFIG_FILES([Makefile src/Makefile]) 
AC_CONFIG_MACRO_DIR([m4]) 

# Checks for programs. 
AC_PROG_CXX 
AC_PROG_CC 

# ... 

# Check for C++0x features 
AC_COMPILE_STDCXX_OX 
AC_HEADER_STDCXX_11 

AC_OUTPUT 

現在,當我運行autoreconf -v我得到這些消息(試過-fiv也):

configure.ac:43: warning: AC_COMPILE_STDCXX_11 is m4_require'd but not m4_defun'd 
../../lib/m4sugar/m4sh.m4:606: AS_IF is expanded from... 
../../lib/autoconf/general.m4:2032: AC_CACHE_VAL is expanded from... 
../../lib/autoconf/general.m4:2053: AC_CACHE_CHECK is expanded from... m4/cppss. 
m4:90: AC_HEADER_STDCXX_11 is expanded from... 

的./configure產量:

... 
./configure: line 16234: AC_COMPILE_STDCXX_OX: command not found 
./configure: line 16235: AC_COMPILE_STDCXX_11: command not found 
... 

我缺少什麼?

感謝,斯特芬

+0

在問題中是否存在拼寫錯誤?你m4_include([m4/check.m4]),但是你寫出宏定義在m4/foo.m4中。 –

+0

@William Pursell:是的,這是一個錯字,謝謝指出。更正它。 – steffen

回答

1

我解決我自己......這是一個幾個錯別字(0O而不是和一樣)失誤把宏在configure.ac的順序混合物中。另外,我發現,如果它只是一個幾個宏,它更容易把它們放到一個在同一目錄下名爲acinclude.m4configure.ac文件,並擺脫

m4_include([m4/check.m4]) 

而且還有在libstdc++ manual錯誤在檢查C++ 11特性的頁面底部的部分中(至少在gcc中),沒有編譯器選項-std=c++11。它應該是-std=c++0x

Cheers,Steffen

+1

使用acinclude.m4是不鼓勵的。請參閱aclocal的文檔。 –

+0

另一種選擇是通過將宏放入aclocal所在的目錄中,使宏可用於所有軟件包。您可以使用--print-ac-dir來調用aclocal來確定哪個目錄是。另外,請在aclocal文檔中查找「dirlist」。 –

+0

@WilliamPursell:謝謝你的建議。我想將測試與軟件一起分發,所以我選擇將宏再次放在m4/check.m4和ac_include這個文件中。 – steffen

相關問題