# Autotools en C/Programme exemple

Nous verrons ici les utilisations les plus simples (par ex : ajouter un fichier), qui sont aussi les plus quotidiennes pour un développeur.

## Préparations du programme Affichage

Nous allons créer un programme Affichage qui produira un simple "Bonjour" dans le terminal. Par respect pour les autres développeurs, nous suivons ici les standards de programmation (notamment GNU). Il est en effet habituel de mettre son code dans un répertoire du même nom que le programme. À l'intérieur de ce répertoire nous placerons le code source dans src/ (ultérieurement, nous créerons docs/ pour la documentation, tests/, po/ pour l'internationalisation du programme, etc.)
Notre arborescence pour l'instant :
On crée le fichier source en langage C dans src/ :
Et éditons-le pour y placer notre code trivial :

## Fichiers de configuration

Pour fonctionner, Autotools se sert de plusieurs fichiers qu'il va créer mais requiert trois fichiers de notre part dont deux sont plus importants :
* configure.ac servant à configurer autoconf
* Makefile.am qui sera utilisé par automake
* README

### configure.ac

Pour faciliter la rédaction de ce fichier, utilisons le programme autoscan qui va fournir un modèle. Pour cela, il faut se placer dans le répertoire principal affichage :
autoscan va générer un fichier configure.scan. Son édition va nous permettre de compléter quelques champs :
Il sera modifié et complété :
Une fois édité, on le renomme en configure.ac. Donc à ce stade, l'arborescence doit être :

### Makefile.am

Il y aura plusieurs fichiers de ce type : autant de Makefile.am que de répertoire à parcourir, un dans le répertoire principal affichage/ et un dans src/. Dans la plupart des projets, il ne contient qu'une ou deux lignes : la liste des sous-répertoires qu'il faudra parcourir dans notre exemple le répertoire src. Pour l'indiquer à Automake, il faut renseigner la variable «SRC» dont c'est justement le rôle.
On ajoute un Makefile.am :
Dans lequel on place ce contenu :
Et on en crée un deuxième :
Dans lequel on va écrire :

### README

Sa rédaction ne pose aucun problème car son contenu n'est pas lu par Automake. Seule sa présence est requise. Il est cependant toujours conseillé de renseigner ces fichiers :
* la documentation augmente la qualité du logiciel
* l'utilisateur est toujours heureux de pouvoir trouver une aide en cas de problème
Toujours pour des raisons de cohérences entre les programmes, il est conseillé d'autre part de s'inspirer d'un README existant pour respecter ses conventions typographiques et se laisser guider par les infos qu'il est bon ou pas de placer dans ce fichier.

### autogen.sh

Ce script (disponible ici) va nous permettre de simplifier la construction, car il réalise toutes les opérations nécessaires de manière automatique. Même si tout est automatique, il faut quand même savoir que ce script lance plusieurs commandes différentes dont :
Il faut noter qu'après ce lancement certains fichiers seront créés dont INSTALL, AUTHORS (vide : à compléter), ChangeLog (vide aussi), NOTES (vide), TODO (vide). Encore une fois, maintenir ces fichiers n'est pas difficile et toujours profitable aux utilisateurs.
Maintenant que tout est prêt, lançons le script :

### LICENSE

Enfin, il faut penser aussi utiliser la bonne licence légale à ajouter au logiciel. Par défaut, GNU Gpl. Nous la garderons, mais il faut faire une petite modification : ajouter le nom du programme et la date.