Vous parlez ici de deux choses distinctes mais intimement liées :
- Autotools
- Normes de codage GNU
Dans Autotools, vous disposez de plusieurs projets :
- Autoconf
- Automake
- Libtool
Examinons-les individuellement.
Autoconf
Autoconf analyse facilement une arborescence existante pour trouver ses dépendances et créer un configure script qui s'exécutera sous presque tout type de shell. Le configure script permet à l'utilisateur de contrôler le comportement de construction (c'est-à-dire. --with-foo
, --without-foo
, --prefix
, --sysconfdir
) ainsi que des vérifications pour s'assurer que le système peut compiler le programme.
Configure génère un config.h
(à partir d'un modèle) que les programmes peuvent inclure pour contourner les problèmes de portabilité. Par exemple, si HAVE_LIBPTHREAD
n'est pas défini, utilisez les fourches à la place.
J'utilise personnellement Autoconf sur de nombreux projets. Il faut généralement un certain temps pour s'habituer à l'utilisation d'Autoconf. m4 . Cependant, cela permet de gagner du temps.
Vous pouvez faire en sorte que les makefiles héritent de certaines des valeurs que configure trouve sans utiliser automake.
Automake
En fournissant un court modèle qui décrit les programmes qui seront construits et les objets qui doivent être liés pour les construire, les Makefiles qui adhèrent aux standards de codage GNU peuvent être automatiquement créés. Cela inclut la gestion des dépendances et toutes les cibles GNU requises.
Certaines personnes trouvent cela plus facile. Je préfère écrire mes propres makefiles.
Libtool
Libtool est un outil très cool pour simplifier la construction et l'installation de bibliothèques partagées sur n'importe quel système Unix-like. Parfois, je l'utilise ; d'autres fois (surtout pour la construction d'objets de liens statiques), je le fais à la main.
Il existe aussi d'autres options, voir la question StackOverflow Alternatives à Autoconf et Autotools ? .
Automatisation de la construction et normes de codage GNU
En bref, vous devriez vraiment utiliser un peu de une sorte de système de configuration de construction portable si vous diffusez votre code aux masses. Ce que vous utilisez dépend de vous. Les logiciels GNU sont connus pour se construire et fonctionner sur presque tout. Cependant, il se peut que vous n'ayez pas besoin d'adhérer à de telles normes (et parfois extrêmement pédantes).
Je vous recommande d'essayer Autoconf si vous écrivez des logiciels pour les systèmes POSIX. Ce n'est pas parce qu'Autotools produit une partie d'un environnement de construction compatible avec les standards GNU que vous devez suivre ces standards (beaucoup ne le font pas !) :) Il y a beaucoup d'autres options, aussi.
Modifier
N'ayez pas peur m4 :) Il y a toujours la Archive des macros Autoconf . De nombreux exemples, ou des vérifications à la volée. Ecrivez vos propres exemples ou utilisez ceux qui ont été testés. Autoconf est bien trop souvent confondu avec Automake . Ce sont deux choses distinctes.