2012-08-10 29 views
21

Uso AX_CXX_COMPILE_STDCXX_0X (puede consultar autoconf-archive) para comprobar las capacidades de C++ 11 del compilador. Determina correctamente que se requiere -std=c++0x, pero no lo agrega al CXXFLAGS. Eché un vistazo a la fuente de macro y realmente comprueba pero luego restaura los indicadores anteriores.Comprobación de Autotools para C++ 11

¿Qué debo hacer para obtener el conjunto CXXFLAGS para poder compilar la fuente C++ 11?

Simplemente agregando -std=c++0x a AM_CXXFLAGS no es una buena solución, porque me gustaría poner la carga de hacer que el compilador compila en modo C++ 11 en los desarrolladores de autoconf, no yo.

Respuesta

28

Lo que usted está buscando ya se ha hecho como AX_CXX_COMPILE_STDCXX_11, parte de autoconf-archive. Agregará la opción requerida al entorno (anteriormente a través de CXXFLAGS, ahora a través de CXX) y error si no está disponible la compatibilidad con C++ 11.

+0

'configure.ac:15: Error: AC_LANG_ASSERT: el lenguaje actual no es C++: C ../../lib/autoconf/lang.m4:156: AC_LANG_ASSERT se expande desde ... m4/ax_cxx_compile_stdcxx_11. m4: 48: AX_CXX_COMPILE_STDCXX_11 se expande desde ... configure.ac:15: el nivel superior autom4te:/usr/bin/m4 falló con el estado de salida: 1 aclocal: error:/usr/bin/autom4te falló con la salida estado: 1 autoreconf: error de aclocal con estado de salida: 1' Lo puse justo después de 'AC_PROG_CXX'. ¿Qué hice mal? – KAction

+0

Perdón por un largo comentario. No encontré forma de formatearlo. Bueno, agregué 'AC_LANG ([C++])' justo antes de 'AX_CXX_COMPILE_STDCXX_11', pero asumí que es llamado por' AC_PROG_CXX'. – KAction

+1

@illusionoflife 'AC_PROG_CXX' no debería hacer eso porque estropearía los scripts de configuración que tienen verificaciones en C y C++. La mayoría de los controles de autoconf dependen de C. Agregar AC_LANG como usted tiene es lo correcto. – hvd