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 :
makesait traiter comme un grand les fichiers avec le suffixe.fet non.f90.- Les compilateurs interprètent en général
.fcomme format fixe.
Deux solutions :
- apprendre à
makecomment traiter les fichiers.f90 - ou bien mettre le suffixe
.fet 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
GNUmakefilene contenant que les lignes définissantFCetFFLAGS. - 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 :
makeaffiche la commande de compilation qu'il a créée à partir duGNUmakefile:
$(FC) $(FFLAGS) plouf.f -o plouf
-
makeutilise les suffixes. On lui demande de créerploufet il voit qu'il existe un fichierplouf.fprésent dans le répertoire : il comprend qu'on veut créer l'exécutableploufà partir du source Fortranplouf.f. -
makeutilise 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 plouftwice without modifying the source file in the meantime, you get the message:
make: `plouf' is up to date.
- Les fichiers
GNUmakefileetplouf.fdoivent ê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.