05.03.2014 Views

Chapitre 1 - IPNL - IN2P3

Chapitre 1 - IPNL - IN2P3

Chapitre 1 - IPNL - IN2P3

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

• x : extrait un fichier de la librairie<br />

• d : efface un fichier dans la librairie<br />

• t : liste le contenu de la librairie<br />

• v : mode parlant<br />

L’utilitaire make<br />

Cet outil permet de construire un exécutable à partir de l'ensemble de ces dépendances. Il<br />

n'est intéressant à mettre en oeuvre que si l'exécutable dépend de nombreuses sources.<br />

La construction se fait par la commande make à partir des instructions indiquées dans un<br />

fichier d'utilisation de make, appelé par défaut « Makefile » ou « makefile ».<br />

Toute la difficulté réside pour le concepteur dans l’écriture du makefile qui doit décrire<br />

astucieusement toutes les étapes de constructions de l’exécutable.<br />

Les construction et reconstruction de l’exécutable final sont particulièrement facilitées<br />

pour l’utilisateur, make travaillant par comparaison de date entre l'exécutable et ses<br />

dépendances. make ne re-exécute que les actions dépendant de modules dont la date de<br />

création est postérieure à la précédente date de construction de l'exécutable, et recrée cet<br />

exécutable automatiquement.<br />

make est très utilisé notamment pour diffuser des applications sous forme de sources, afin<br />

que l’utilisateur n’ait pas à se poser de questions quand aux compilations mais ait juste à<br />

taper make.<br />

Un fichier makefile peut contenir plusieurs objectifs à construire, appelés cibles.<br />

make<br />

make [-f fichier] [cible] : construit la cible précisée ou la première décrite si cible est omis.<br />

On décrira donc en général la cible totale en premier dans le makefile.<br />

• -f fichier : précise un fichier d'utilisation si le nom est différent de Makefile ou<br />

makefile<br />

Ecriture du fichier makefile :<br />

cible1:dépendances [cible2 cible3...]<br />

action<br />

cible2:dépendances<br />

action<br />

...<br />

On peut définir des variables dans le fichier makefile, et mettre des commentaires<br />

commençant par #.<br />

(Dans l'exemple suivant le touch des fichiers sert uniquement à modifier leur date de mise<br />

à jour et donc à simuler une édition avec modification de la source qui, aurait le même<br />

effet sur la date de dernière modification.)<br />

______________________________________________________________________<br />

exemple :<br />

$ cat makefile<br />

# construit s1 a partir de s1.f s2.f s3.f

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!