Année 2004 - 2005
TP4
Voici un document français sur les principales règles du Makefile.
Créez un répertoire SYSTEME_UNIX/TP4
et enregistrez-y les fichiers suivants :
fichier1, fichier2, fichier3,
Makefile
1) A la main, compilez le code fortran et
créez
l'exécutable
Utilisation de la commande touch
-
f90 -c *.f90
- f90 *.o -o alea
-
touch <fichier>
permet de changer la date du fichier, et donc oblige make à
recompiler ce fichier.
2) Que fait la commande make
?
Que fait la commande make
clean ?
make lit le fichier
Makefile et exécute les instructions qu'il contient. La cible
par défaut est la première, puis il exécute "en
remontant" les dépendances.
make clean efface les
fichiers objets (*.o) et les fichiers temporaires d'emacs (*~)
3) A partir du fichier Makefile,
créez un fichier Makefile2
dans lequel vous
définissez
une macro de substitution OBJS
pour
les points objets
OBJS=
main.o pdscal.o addition.o
et remplacer ces .o par $(OBJS) dans le Makefile.
Attention dans un fichier Makefile de bien respecter la syntaxe
cible: dépendance
<tabulation>commande à exécuter
Si vous le mettez pas la tabulation, make
est perdu !
4) A
partir du fichier Makefile2,
créez un fichier Makefile3
et
- avec le caractère @
faites en sorte que les commandes exécutées
par make n'apparaissent pas (tapez
@ en début de commande)
- avec
la commande echo, affichez du
texte
à la place des résultats des commandes
(echo chaine affiche la
chaîne
chaine à l'écran)
Remarque : @ doit se placer après
la tabulation
5) A partir du fichier Makefile3,
créez un fichier Makefile4
et avec les macros $@
et $< remplacez le maximum de texte
dans
ce fichier
$@ remplace la cible :
alea: $(OBJS)
f90 $(OBJS) -o $@
$< remplace la dépendance
main.o: main.f90
f90 -c $<
NB : $< ne fonctionne pas sur lebowski
avec make, mais fonctionne avec gmake (GNU make)
6)
Créez un fichier Makefile5
en remplaçant le
maximum
de texte par des macros
OBJS: main.o pdscal.o
addition.o alea: $(OBJS) $(CC) -c $< |