Compilation d'un programme à un seul fichier avec make
Même si make
donne la pleine mesure de son utilité pour un programme
à plusieurs fichiers, reprenons le cas d'un programme à un seul
fichier.
The variables that make
uses
FC
: initials of Fortran compiler, that is the compiling command.
Examples :
FC = gfortran
ou
FC = ifort
(Nota bene : les espaces de part et d'autre du signe égal n'ont pas
d'importance dans le langage de make
, à la différence d'un shell.)
FFLAGS
: Fortran flags, those are compilation options.
Suffixe .f
ou .f90
?
Nous avons des fichiers au format libre. Quel suffixe choisir ?
Désaccord entre make
et les compilateurs :
make
sait traiter comme un grand les fichiers avec le suffixe.f
et non.f90
.- Les compilateurs interprètent en général
.f
comme format fixe.
Deux solutions :
- apprendre à
make
comment traiter les fichiers.f90
- ou bien mettre le suffixe
.f
et ajouter une option de compilation qui spécifie le format libre
La deuxième solution est la plus simple.
Manipulation 3
- Créer un fichier
GNUmakefile
ne contenant que les lignes définissantFC
etFFLAGS
. - Compiler le programme trivial avec
make
. Par exemple :
make plouf
(sans suffixe) si votre source s'appelle plouf.f
.
- Ré-exécuter
make plouf
. - Modifier le source et ré-exécuter
make plouf
.
Nota bene :
make
affiche la commande de compilation qu'il a créée à partir duGNUmakefile
:
$(FC) $(FFLAGS) plouf.f -o plouf
-
make
utilise les suffixes. On lui demande de créerplouf
et il voit qu'il existe un fichierplouf.f
présent dans le répertoire : il comprend qu'on veut créer l'exécutableplouf
à partir du source Fortranplouf.f
. -
make
utilise les dates de modification des fichiers. It only compiles again when it is useful to do so, considering the modification dates of the source file and the corresponding executable file (if there is already one in the current directory). So if you type the commandmake plouf
twice without modifying the source file in the meantime, you get the message:
make: `plouf' is up to date.
- Les fichiers
GNUmakefile
etplouf.f
doivent être présents dans le répertoire courant.
Cible dans le GNUmakefile
Possibilité de spécifier la cible, plouf
, dans le GNUmakefile
.
Ajouter la ligne :
plouf:
La commande make
tout court (sans argument après make
) tente de
créer ou mettre à jour la première cible rencontrée dans le
GNUmakefile
. Inutile alors d'écrire make plouf
sur la ligne de commande.
Manipulation 4
- Ajouter la cible dans le
GNUmakefile
. - Compiler en invoquant simplement
make
, sans argument.