¿Dónde pongo macros adicionales de autotool?

respuesta de emsr a esta pregunta: ¿Cómo puedo especificar que quiero C ++ 0x en Makefile.am? es la solución a un problema que tengo. No, tengo uno nuevo:

Pongo la definición de macro en m4/check.m4 y cambio mi configure.ac en consecuencia:

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

Ahora cuando corro autoreconf -v Recibo estos mensajes (intenté -fiv también):

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...

./configurar rendimientos:

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

¿Qué me estoy perdiendo?

Gracias, Steffen

preguntado el 03 de mayo de 12 a las 13:05

¿Hay un error tipográfico en la pregunta? Usted m4_include([m4/check.m4]), pero escribe que la definición de la macro está en m4/foo.m4. -

@William Pursell: Sí, fue un error tipográfico, gracias por señalarlo. corregido -

1 Respuestas

Lo resolví yo mismo... Fue una mezcla de varios errores tipográficos (0 en lugar de O y similares) y errores en el orden de poner las macros en el configure.ac. Además, descubrí que si son solo unas pocas macros, es más fácil ponerlas en un archivo llamado acinclude.m4 en el mismo directorio que configure.ac y deshacerse de la

m4_include([m4/check.m4])

Y hay un error en el manual de libstdc++ en la parte en la parte inferior de la página donde se verifican las características de c++ 11, ya que (al menos en gcc) no hay una opción de compilador -std=c++11. Debería ser -std=c++0x.

Saludos, Steffen

contestado el 04 de mayo de 12 a las 13:05

Se desaconseja el uso de acinclude.m4. Consulte la documentación de aclocal. - Guillermo Pursell

Otra opción es hacer que la macro esté disponible para todos los paquetes colocándola en el directorio en el que busca aclocal. Puede invocar aclocal con --print-ac-dir para determinar qué directorio es. Además, busque 'dirlist' en la documentación aclocal. - Guillermo Pursell

@WilliamPursell: gracias por el consejo. Quiero distribuir la prueba junto con el software, así que opté por poner las macros nuevamente en m4/check.m4 y ac_include este archivo. - Steffen

Si coloca el archivo .m4 en $(aclocal --print-ac-dir), aclocal lo copiará en aclocal.m4 y terminará en el tarball de distribución. - Guillermo Pursell

@WilliamPursell: Ya veo... gracias de nuevo, tal vez esa sea la mejor opción que ;) - Steffen

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.