La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Page 1 IR98 AutoconfAutomake Michel TRAN Ingénieurs 2000 Informatique - Réseaux Novembre 2000.

Présentations similaires


Présentation au sujet: "Page 1 IR98 AutoconfAutomake Michel TRAN Ingénieurs 2000 Informatique - Réseaux Novembre 2000."— Transcription de la présentation:

1 Page 1 IR98 AutoconfAutomake Michel TRAN Ingénieurs 2000 Informatique - Réseaux Novembre 2000

2 Page 2 IR98 Plan  Définition  Motivation et raison de l’existence de tels outils  Fonctionnement par l’exemple  Procédure à l’installation d’un tel package  Problème

3 Page 3 IR98 Définitions  Automake est un générateur expérimental de makefiles. Il a été inspiré par le make de BSD 4.4, mais se veut portable et conforme aux standards GNU pour les variables et les cibles des makefiles.  Autoconf de GNU est un outil permettant la configuration des sources et des Makefile.  Ces 2 outils aident le programmeur dans la création de packages portables et configurables en permettant à la personne construisant le package de spécifier différentes options de configuration.

4 Page 4 IR98 Motivation  logiciel nécessite des tâches de maintenance en général pénible (compilation, nettoyage de l’arborescence, gestion des dépendances entre fichiers)  Évolution des logiciels ( rajout de fichiers, …)  Utilisation sur des machines différentes, portable  Intérêt : minimiser la tâche de maintenance en décrivant la structure de l’application en terme de plus haut niveau

5 Page 5 IR98 Fonctionnement : règle (depth)  Depth Automake supporte 3 types de hiérarchie des répertoires:  Flat Tous les fichiers se trouve dans un répertoire unique  Deep Le répertoire principal contient les fichiers de configuration et les sources sont dans les sous-répertoires  Shallow Le source primaire se trouve dans le répertoire principale et les sous répertoires contiennent essentiellement les bibliothèques.

6 Page 6 IR98 Fonctionnement : règle (strictness)  Strictness Indique le niveau de « sévérité » avec lequel automake devra vérifier la conformité avec les standards.  Foreign Vérifie seulement le strict nécessaire pour pouvoir fonctionner.  Gnu Vérifie la conformité avec le standard GNU. C’est l’option par défaut.  Gnits Vérifie la conformité avec le standard gnits.

7 Page 7 IR98 Fonctionnement  Automake et autoconf fonctionnent de paire  Utilisation d’autres outils pour créer un package: autoscan, aclocal et autoheader  Prenons l’exemple suivant : (deep) Helloworld configure.in Makefile.am src Makefile.am helloworld.c helloworld.h main.c

8 Page 8 IR98 Autoconf (1)  configure.in décrit les options et spécificités à tester avant la compilation  Autoscan permet de générer un fichier configure.scan prototype de configure.in  configure.in AC_INIT(src/hello) AM_INIT_AUTOMAKE(hello,0.1) AM_CONFIG_HEADER(config.h) AC_PROG_CC dnl pour utiliser compilateur C++ :AC_PROG_CXX AC_OUTPUT(Makefile src/Makefile)

9 Page 9 IR98 Autoconf (2)  Autoconf transforme configure.in en un script exécutable (configure) qui  effectue réellement les tests checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether gcc accepts -g... yes  génère Makefile creating Makefile creating src/Makefile configure.in Makefile.in autoconf configure Makefile

10 Page 10 IR98 Automake (1)  Automake --foreign --add-missing  Automake lit un Makefile.am et génère un Makefile.in.  Mettre un Makefile.am dans chaque sous répertoire  Certaines macros indique la génération de code spécialisé, par exemple bin_PROGRAMS signifie qu’on va avoir génération d’exécutables.  Automake utilisera la macro AC_OUTPUT(Makefile src/Makefile) dans le fichier configure.in pour savoir les Makefile.in à générer

11 Page 11 IR98 Automake (2)  Makefile.am ## comment SUBDIRS = src configure.in Makefile.in autoconf configure Config.h Options de l’utilisateurs Makefile automake config.h.in Makefile.am  src/Makefile.am bin_PROGRAMS = hello hello_SOURCES = hello.h hello.c main.c ##SUBDIRS = sousrep

12 Page 12 IR98 Plus d’options  Hello fait appel à la bibliothèque libmath Makefile.am : bin_PROGRAMS = hello hello_SOURCES = hello.c hello_LDADD = -lm  Compilation avec l’option debugging –g Configure.in : CXXFLAGS="" AC_ARG_ENABLE(debug, [ --enable-debug Compilation flags to allow debugging], CXXFLAGS="-g" ) AC_DEFINE(CXXFLAGS)

13 Page 13 IR98 Résumé  Récapitulatif des actions à mener pour avoir un projet qui fonctionne OutilsActions autoscanPour générer un moule du fichier configure.in aclocalPour installer les outils complémentaires nécessaires à Automake autoheaderPour déterminer quelles sont les variables du pré- processeur que l'on va définir et les sauver dans le fichier config.h.in autoconfGénérer configure à partir de configure.in automakeGénérer les fichiers Makefile.in à partir des Makefile.am./configureGénérer les Makefile et le fichier config.h en fonction des options de compilation souhaitées makeGénère les éxécutables

14 Page 14 IR98 Installation (1)  L’installation du package comporte :  1. détection du matériel, des outils et des bibliothèques  2. compilation  3. copie des fichiers dans les répertoires cibles

15 Page 15 IR98 Installation (2)  1. détection du matériel : elle se lance par la commande./configure./ configure --bindir=/usr/local/bin --enable-debug  2. compilation proprement dite : make utilise un script qui lance le compilateur en lui disant quels fichiers compiler, et quels sont les paramètre de la compilation.  3. copie des fichiers : appelez make install ; cette commande utilise aussi un script, cette fois-ci pour copier les fichiers (binaires, doc, images, etc...) dans /usr/local/bin.

16 Page 16 IR98 Problèmes courants  Bibliothèques absentes configure: error: Cannot find library guile  Problèmes de syntaxes dans configure.in: AC_DEFINE(CFLAGS) juste AC_DEFINE (CFLAGS) faux  Limites Détecte la configuration mais ne peut pas ajouter les informations manquantes ou les corrigées. (ex:fichiers d’en-têtes erronées sur ce un système)

17 Page 17 IR98 Conclusion  Outils très puissants qui contiennent un important jeu de test (macro)  Il est fortement conseillé de lire la documentations GNU pour avoir un meilleure aperçu des capacités de ces outils  Outils facilitant la maintenance des logiciels en contre partie d’un effort pour apprendre leur utilisation.

18 Page 18 IR98 Bibliographie  Références : Docs GNU  Automake  http:// source.redhat.com/automake/automake.html  Autoconf  http://source.redhat.com/autoconf/autoconf.html  Autres liens :  http://www.amath.washington.edu/~lf/tutorials/autoco nf/index.html

19 Page 19 IR98 Questions


Télécharger ppt "Page 1 IR98 AutoconfAutomake Michel TRAN Ingénieurs 2000 Informatique - Réseaux Novembre 2000."

Présentations similaires


Annonces Google