Skip to topic | Skip to bottom
Home
Linfo
Linfo.GLEnvtProg0506TP2r1.4 - 06 Feb 2007 - 14:44 - ChristopheDelagetopic end

Start of topic | Skip to actions

TP 2 - Make et autres outils pour la construction

Licence 3 Informatique - 2005-2006

PhilippeCollet, RogerRousseau

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" et sans renommer ou recopier Makefile.2 ? Faites le !
  • Ajoutez des commentaires au makefile (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 a 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 permet de visualiser ce qu'il ferait, sans le faire !

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 moi cette cible robuste !
  • Ajoutez à ce makefile une règle qui, en plus d'éliminer les fichiers qui ne vous intéressent pas, élimine aussi l'exécutable. Utilisez la règle précédente pour créer cette nouvelle cible "veryclean".

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 ne faites que changer les cibles, les .c et les .h, cela fonctionne-t-il ? Pourquoi ? Ajoutez les bibliothèques manquantes et retestez.
  • En fait, 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 bien que les dépendances (.c/.h) sont correctement gérées à coup 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 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 ?

-- PhilippeCollet - 02 Feb 2006


to top


You are here: Linfo > GLEnvtProg0506TP2

to top

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