Skip to topic | Skip to bottom
Home
Linfo
Linfo.GLEnvtProg0708TP2r1.6 - 09 Sep 2009 - 10:28 - MenezGillestopic end

Start of topic | Skip to actions

TP 2 - Make et autres outils pour la construction

Licence 3 Informatique - 2007-2008

PhilippeCollet, NicolasNobelis

URL de cette page : http://deptinfo.unice.fr/twiki/bin/view/Linfo/GLEnvtProg0708TP2

Objectifs

  • Comprendre le fonctionnement d'un makefile explicite (cible, dépendance, mise à jour), puis des règles implicites.
  • Créer un makefile par adaptation.
  • Expérimenter quelques directives.
  • Utiliser les différents types de variables.
  • Créer un makefile avec des règles implicites et savoir créer ces règles.
  • Ce TP devrait durer une séance et demi.

Premier makefile explicite pour l'outil de conversion

Nous allons construire et modifier progressivement un makefile pour automatiser au mieux la construction de l'outil de conversion, implémenté en C et vu en cours.

  • Créez un répertoire TP2 pour ce TP.
  • Récupérez l'archive conversion.tgz et décompactez-la dans un répertoire créé pour cette série d'exercice (conversion semble un nom intéressant).
  • Etudiez le fichier Makefile.1 et essayez de construire l'application à l'aide de make.
  • Que faudrait-il faire pour que, par défaut, l'application soit construite sans donner son nom de cible ? Faites-le dans un fichier Makefile.2
  • Que faudrait-il faire pour que tout se construise simplement en tapant make (sans paramètres) et sans renommer ou recopier Makefile.2 ? Faites-le !
  • Ajoutez des commentaires au fichier Makefile.2 (vous le ferez systématiquement à partir de maintenant), par exemple pour expliquer les dépendances de compilation séparée et la reliure finale.

Gestion des fichiers d'en-têtes

  • Modifiez le fichier convertir.h pour que le taux passe à 6.55957. Relancez make. Que se passe-t-il ? Quel devrait être le comportement normal ?
  • Créez un Makefile.3 qui gère correctement les .h (recherchez les dépendances dans les fichiers sources). Pour tester votre makefile, modifiez la date des divers fichiers .h avec la commande touch, puis relancez make pour observer si seuls les fichiers dépendants du .h modifié ont été recompilés.
  • Effectuez le même genre de tests que précédemment (touch, make), mais exécutez la commande make avec l'option qui affiche les commandes qui seraient exécutées, sans les exécuter.

Faire le ménage

  • Ajoutez une cible clean qui efface tous les fichiers inutiles (/bin/rm *.o *.bak *~ core).
  • Que se passe-t-il si vous lancez deux fois de suite la commande make clean ? Rendez cette cible robuste !
  • Ajoutez à ce makefile une règle veryclean qui, en plus d'éliminer les fichiers qui ne vous intéressent pas, efface aussi l'exécutable. Utilisez la règle clean pour créer cette nouvelle cible.

Création d'un nouveau makefile

Rien ne se perd, tout se transforme : on crée la plupart du temps un makefile en récupérant et en adaptant un précédent makefile.

  • Créez un répertoire pacman pour la suite de ce TP.
  • Récupérez l'archive leretourdepacman.tgz et décompactez la.

Nous allons maintenant construire, progressivement, le makefile idéal pour ce programme...

  • Recopiez la meilleure version de votre Makefile pour la conversion et adaptez la pour pacman.
  • Si vous ne faites que changer les cibles, les .c et les .h, cela fonctionne-t-il ? Pourquoi ? Ajoutez les bibliothèques manquantes et retestez.
  • Pour faire les choses bien, il faudrait aussi référencer les "include" graphiques dans les cibles "gcc -c ...". Pourquoi cela fonctionne-t-il quand même ? Rajoutez tout de même le -I qui référence les "include".
  • Testez que les dépendances (.c/.h) sont correctement gérées à l'aide de touch.
  • Ajoutez une cible install qui déplace l'exécutable créé dans votre répertoire bin.
  • Débrouillez vous pour que, par défaut, le makefile construise et installe pacman !

Manipulation des variables d'environnement

  • Créez un makefile dont la cible par défaut affiche la valeur des variables SHELL, OSTYPE et USER.
  • Regardez l'effet produit en fonction du caractère d'exportation de ces variables (comparer le résultat à l'aide de set et export dans votre shell)
  • Modifiez ces valeurs en appelant le makefile (par exemple make USER=pipo).
  • Regardez l'effet produit, à l'exécution de make, puis dans le shell qui a lancé make.
  • Qu'en déduisez-vous ?


-- NicolasNobelis - 12 Feb 2008
to top

I Attachment sort Action Size Date Who Comment
conversion.tgz manage 1.1 K 27 Jan 2008 - 14:55 NicolasNobelis Archive du premier exercice
leretourdepacman.tgz manage 6.6 K 27 Jan 2008 - 14:59 NicolasNobelis Archive du second exercice

You are here: Linfo > GLEnvtProg0708 > GLEnvtProg0708TP2

to top

Copyright © 1999-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo? Send feedback