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, incluidoltmain.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 usarconfig.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 porconfigure.ac
en el script deconfigure
. -
automake
: para convertir todos losMakefile.am
en plantillasMakefile.in
. Probablemente desee invocar esto con--add-missing
para que se puedan vincular / copiar scripts de soporte adicionales a su proyecto (comocompile
,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ónautoreconf
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.