web-dev-qa-db-fra.com

Erreur de création automatique './ltmain.sh' introuvable

J'ai installé mingw et msys en utilisant mingw-get-setup.exe. J'ai également installé Autotools (autoconf, automake, m4, libtool) dans C:\/opt/autotools.

Lorsque j'exécute automake, l'erreur suivante se produit toujours:

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

Si je copie ltmain.sh à partir de l'arborescence installée de libtool, l'exécution se terminera normalement.

Comment puis-je configurer automake pour trouver ltmain.sh sans copier?

23
user1345414

Dans un projet autoconf/automake/libtool, vous devez appeler:

  • libtoolize: ceci copie/relie quelques scripts de support, dont ltmain.sh (qui est le composant principal de libtool).
  • aclocal: ceci recherche toutes les macros m4 dont votre script de configuration aura besoin, et fait une copie locale pour un accès plus facile.
  • autoheader: facultatif, si vous souhaitez utiliser config.h/AC_CONFIG_HEADERS, sinon toutes les macros de résultats de test seront alignées lorsque vous appelez le compilateur.
  • autoconf: pour développer toutes les macros utilisées par configure.ac dans le script configure.
  • automake: pour convertir tous les Makefile.am en Makefile.in modèles. Vous voulez probablement invoquer ceci avec --add-missing pour que des scripts de support supplémentaires puissent être liés/copiés dans votre projet (tels que compile, missing, depcomp, test-driver, etc).

Vous souhaiterez probablement ajouter un script bootstrap à chacun de vos projets, qui invoque tous ces outils, dans cet ordre. Ou vous pourriez être paresseux et simplement invoquer autoreconf -i et voyez si cela fonctionne pour votre projet.

Après (et pendant) que vous avez des Makefiles générés par le script de configuration, les autotools prennent soin de lui-même; c'est-à-dire, si vous modifiez configure.ac, ou tout Makefile.am, les bons outils ci-dessus seront à nouveau invoqués pour tout garder à jour, en exécutant simplement make. Faites juste attention à ne pas créer d'erreur de syntaxe dans le Makefile.am fichiers, sinon vous pourriez vous retrouver avec des Makefiles cassés, ce qui entraînerait le refus de make - auquel cas vous devrez exécuter le script bootstrap (ou autoreconf) manuellement.

MODIFIER:

Le manuel d'automake dit ceci sur aclocal:

aclocal devrait disparaître.

Et plus bas:

Du point de vue de l'utilisateur, la suppression de aclocal pourrait s'avérer pénible. Il existe une simple précaution que vous pouvez prendre pour rendre ce changement plus transparent: n'appelez jamais vous-même un local . Gardez ce type sous le contrôle exclusif de autoreconf et des règles de reconstruction d'Automake.

Alors voilà: utilisez autoreconf -i pour être évolutif, sauf si vous avez une très bonne raison d'utiliser directement les outils.

55
DanielKO