¿Dónde pongo macros adicionales de autotool?
Frecuentes
Visto 398 veces
1
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
1 Respuestas
1
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 autotools or haz tu propia pregunta.
¿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
@William Pursell: Sí, fue un error tipográfico, gracias por señalarlo. corregido - steffen