1

emsr 对这个问题的回答:如何在 Makefile.am 中指定我想要 C++0x?是我遇到的问题的解决方案。不,我有一个新的:

我将宏定义放入 m4/check.m4 并相应地更改我的 configure.ac:

AC_INIT([CppSs], [0.1], [brinkmann@hlrs.de])
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
...

我错过了什么?

谢谢,史蒂芬

4

1 回答 1

1

我自己解决了......这是几个拼写错误(0而不是O类似)和将宏放入configure.ac. 另外,我发现,如果它只是几个宏,将它们放在acinclude.m4同一目录中的一个文件中configure.ac并摆脱

m4_include([m4/check.m4])

并且在检查 c++11 功能的页面底部部分的libstdc++ 手册中有一个错误,因为(至少在 gcc 中)没有编译器选项-std=c++11。应该是-std=c++0x

干杯,史蒂芬

于 2012-05-04T12:43:28.527 回答