c autotools automake mingw32 libtool

Error de creación automática ''./ltmain.sh'' no encontrado



autotools automake (1)

He instalado mingw y msys utilizando mingw-get-setup.exe . También instalé Autotools (autoconf, automake, m4, libtool) en C://opt/autotools .

Cuando ejecuto automake, siempre ocurre el siguiente error:

configure.ac:11: error: required file ''./ltmain.sh'' not found

Si copio ltmain.sh del árbol instalado de libtool, la ejecución finalizará normalmente.

¿Cómo puedo configurar automake para encontrar ltmain.sh sin copiar?


En un proyecto autoconf / automake / libtool tienes que invocar:

  • libtoolize : esto copia / enlaza algunos scripts de soporte, incluido ltmain.sh (que es el componente principal de libtool).
  • aclocal : busca todas las macros m4 que necesitará su script de configuración y haga una copia local para facilitar el acceso.
  • autoheader : opcional, si desea usar config.h / AC_CONFIG_HEADERS , de lo contrario, todas las macros de resultados de prueba estarán en línea cuando llame al compilador.
  • autoconf : para expandir todas las macros utilizadas por configure.ac en el script de configure .
  • automake : para convertir todos los Makefile.am en plantillas Makefile.in . Probablemente desee invocar esto con --add-missing para que se puedan vincular / copiar scripts de soporte adicionales a su proyecto (como compile , missing , depcomp , test-driver , etc.).

Lo más probable es que desee agregar un script bootstrap a cada uno de sus proyectos, que invoque todas esas herramientas, en este orden. O puede ser perezoso y simplemente invocar autoreconf -i y ver si eso funciona para su proyecto.

Después de (y mientras) tienes Makefile trabajo generado por el script de configuración, autotools se encarga de sí mismo; es decir, si edita configure.ac , o cualquier Makefile.am , las herramientas correctas de arriba se invocarán nuevamente para mantener todo actualizado, simplemente ejecutando make . Solo tenga cuidado de no crear un error de sintaxis en los archivos Makefile.am , de lo contrario podría terminar con Makefile rotos, lo make provocará make rechace la ejecución, en cuyo caso debe ejecutar el script bootstrap (o autoreconf ) manualmente.

EDITAR:

El manual de automake dice esto acerca de aclocal:

Se espera que aclocal desaparezca.

Y más abajo:

Desde el punto de vista del usuario, la eliminación de un aclocal puede resultar dolorosa. Hay una simple precaución que puede tomar para hacer que el cambio sea más transparente: nunca llame a un local local . Mantén a este tipo bajo el control exclusivo de las reglas de reconstrucción autoreconf y de autoformación.

Así que ahí lo tienen: use autoreconf -i para estar autoreconf -i para el futuro, a menos que tenga una muy buena razón para usar las herramientas directamente.