Automake
358662
31624117
2008-07-16T12:57:55Z
Melkor73
214113
/* Voir aussi */ fix lien SCons
'''GNU Automake''' est un [[logiciel]] générant des [[makefile|makefiles]] [[Portabilité (informatique)|portables]] qui peuvent être utilisés par [[make]] pour compiler des programmes. Il provient de la [[Fondation pour le logiciel libre|Free Software Foundation]] et fait partie du système de compilation [[GNU]]. Les makefiles produits se conforment aux normes de programmation de GNU.
Automake est écrit en [[Perl (langage)|Perl]] et doit être utilisé avec [[Autoconf]], un autre outil GNU. Il contient les commandes suivantes:
* aclocal
* automake
Automake peut présenter des difficultés à cause du fait que les [[Version d'un logiciel|versions]] récentes ne sont pas [[Compatibilité ascendante et descendante|compatibles]] avec les plus anciennes. Par exemple, un projet créé avec Automake 1.4 ne fonctionnera pas avec Automake 1.9.
==Approche==
Automake vise à permettre au programmeur d'écrire un makefile dans un langage de plus haut niveau, plutôt que d'avoir à écrire le makefile au complet à la main. Dans les cas simples, il suffit de donner :
* une ligne qui déclare le nom du programme à compiler;
* une liste de fichiers sources;
* une liste d'options à passer au compilateur (notamment, dans quels répertoires les en-têtes seront trouvés);
* une liste d'options à passer à l'[[Édition de liens|éditeur de liens]] (de quelles bibliothèques le programme a besoin et dans quels répertoires elles se trouvent);
À partir de cette information, Automake génère un makefile qui permet à l'usager de :
* compiler le programme;
* nettoyer (supprimer les fichiers produits par la compilation);
* installer le programme dans les répertoires prévus par les normes GNU;
* désinstaller le programme des répertoires où il a été installé;
* créer une archive de distribution des sources (souvent appelée ''tarball'' en [[anglais]]);
* vérifier que cette archive est auto-suffisante, et en particulier qu'il est possible de compiler le programme dans un répertoire autre que celui où les sources sont déployées);
Automake s'occupe aussi de générer automatiquement les informations de dépendances, afin que lorsqu'un fichier source est modifié, la prochaine invocation de la commande ''make'' sache quels fichiers sources ont besoin d'être recompilés en conséquence. Si le compilateur le permet, Automake tente de rendre le système de dépendances dynamique: chaque fois qu'un fichier source est compilé, les dépendances de ce fichier sont mises à jour en demandant au compilateur de regénérer la liste des dépendances de ce fichier. Autrement dit, la gestion des dépendances est un effet de bord du processus de compilation.
Ceci tente d'éviter le problème avec certains systèmes de dépendances statiques où les dépendances ne sont détectées qu'une seule fois quand le programmeur commence à travailler sur un projet. Dans un tel cas, si un fichier source acquiert une nouvelle dépendance (par exemple, si on ajoute une directive #include à un fichier source en [[C (langage)|C]]), une disparité apparaît alors entre les vraies dépendances et celles qui sont utilisées par le système de compilation. Le programmeur devrait alors regénérer les dépendances, mais il risque d'oublier de le faire.
Automake facilite aussi la compilation de bibliothèques en générant automatiquement des makefiles qui invoquent GNU [[Libtool]]. Le programmeur est alors exempté d'avoir à utiliser Libtool directement et le projet bénéficie d'un outil capable de créer des bibliothèques de façon portable.
==Références==
* Gary V. Vaughan, Ben Elliston, Thomas Tromey: ''Gnu Autoconf, Automake, and Libtool'', Sams, ISBN 1-57870-190-2
==Voir aussi==
* [[CMake]]
* [[SCons]]
==Liens externes==
Les sites suivants sont en [[anglais]] :
* [http://sources.redhat.com/automake/ Site d'Automake]
* [http://sources.redhat.com/automake/automake.html Manuel]
* [http://sources.redhat.com/autobook/autobook/autobook_toc.html Version Web du livre ''Gnu Autoconf, Automake, and Libtool'']
* Tutoriel "[http://www.amath.washington.edu/~lf/tutorials/autoconf/ Learning Autoconf and Automake]" par [[Eleftherios Gkioulekas]]
* Article "[http://www.openismus.com/documents/linux/automake/automake.shtml Using Automake and Autoconf with C++]" par [[Murray Cumming]]
* [http://autotoolset.sourceforge.net/ Site d'Autotoolset]
* [http://www.gnu.org/prep/standards/ Normes de programmation de GNU (GNU coding standards)]
{{GNU}}
{{Portail logiciels libres}}
[[Catégorie:Outil libre de développement logiciel]]
[[Catégorie:Logiciel du projet GNU]]
[[en:Automake]]
[[es:GNU Automake]]
[[ko:Automake]]
[[pl:Automake]]
[[pt:Automake]]
[[ru:Automake]]