De nombreux logiciels utilisent le fameux script configure, qui reste un mystère total pour certain. Ce script permet une grande compatibilité avec la majorité des distributions Linux ET BSD. Et pourquoi ? Simplement parce que ce script auto-généré qui vérifie les dépendances et écrit les Makefile permet ceci :
$ ./configure --prefix=/usr $ make $ make install DESTDIR=~/usr/monpaquet
Le paquet croit être installé dans /usr alors qu'il est installé dans ~/usr/monpaquet. Très pratique pour certain gestionnaire de paquet ce qui permet un controle plus aisée (selon moi). Ce principe de "FAKEROOT" est utilisé par GreenPKG (un gestionnaire de paquet simplissime que j'ai réalisé).
Ce n'est biensur pas la seule fonctionnalité :
Comment le réaliser ? Il vous suffit de réaliser quelques petits fichiers : configure.ac (qui va générer le configure) et les quelques Makefile.am (qui vont être utilisés pour générer le Makefile final).
Généralement on organise comme ceci :
|- configure.ac # configure |- Makefile.am # Makefile général |-+ src/ # Contient les sources de notre programme |- Makefile.am # Makefile spécifique aux sources |- po/ # Contient les fichiers de traductions
Voici un exemple de configuration qui nécéssite tout simplement GTK :
configure.ac
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | # Info du programme AC_INIT([programme], [version], [bug-report@machin.com]) # Options par défaut à passer au compilateur AN_INIT_AUTOMAKE([-Wall -Werr foreign]) # On cherche si pkg-config est présent sur l'ordi AC_CHECK_PROGS([PKGCONFIG], [pkg-config], [:]) if test "$PKGCONFIG" = :; then AC_MSG_ERROR([Package 'pkg-config' not found]) fi AC_PROG_CC # Le fichier qui contiendra la configuration du logiciel AC_CONFIG_HEADERS([config.h]) # Les Makefiles AC_CONFIG_FILES([ Makefile src/Makefile ]) # On cherche les dépendances PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.14) AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) AC_OUTPUT |
Makefile.am
1 | SUBDIRS = src |
src/Makefile.am
1 2 3 4 | bin_PROGRAMS = aout aout_SOURCES = main.c aout_CFLAGS = $(GTK_CFLAGS) # On ajoute les CFLAGS de GTK récupérés dans le configure.ac aout_LDADD = $(GTK_LIBS) # Et les librairies pour l'éditeur de liens |
Ensuite il suffit de lancer :
$ autoreconf --install
Ceci n'est qu'un exemple, je vous invite donc à lire ce tutoriel extrèmement bien fait.
Cordialement, David Delassus
| Author | Message |
|---|