Utilisation d’un Makefile

Introduction

La commande make permet de maintenir un programme (ou un ensemble de programmes) en se basant sur sa date de dernière modification et des dates de modification des différents modules qui le constituent. Par exemple, après avoir modifié certains modules sources d’un programme, make, automatiquement, lancera les compilations et éditions de liens nécessaires à la reconstruction du programme. Make utilise un fichier, le makefile, qui décrit les liaisons de dépendance entre les différents modules ainsi que les actions à réaliser pour mettre à jour le programme.

Utilisation d’un makefile

L’utilisation d’un fichier makefile pour compiler ses programmes est très utile. Il suffit de lancer la commande make (voir ci dessous) dans le répertoire où se trouve le fichier makefile pour générer l’exécutable lorsque des fichiers sources ont été modifiés. C’est dans le fichier makefile que sont décrites : · les relations de dépendances entre programme (la cible) et modules, · les commandes (associées à une cible) à exécuter pour effectuer les mises à jour de la cible · et les « macro » qui facilitent l’écriture des relations et des commandes. Les commentaires sont, comme habituellement, précédés du signe « # ». De nombreuses macros sont définies de façon implicite, la commande (make –p) permet de les lister.

Voici un exemple de makefile :

MF=     makefile

CC=     icc
CFLAGS= -O2

LDFLAGS= -lmpi

EXE=    mon_executable

SRC= \
mon_programme.c \
module_1.c \
module_2.c

INC = \
mon_include.h

.SUFFIXES:

.SUFFIXES: .c .o

OBJ =  $(addsuffix .o, $(basename $(SRC)))

.c.o:
	$(CC) $(CFLAGS) -c $<

all:    $(EXE)

$(EXE): $(OBJ)
	$(CC) $(CFLAGS) -o $@ $(OBJ) $(LDFLAGS)

$(OBJ): $(MF) $(INC)

clean:
	rm -f $(OBJ) $(EXE)

Les commandes make et gmake

La syntaxe est :

make [-arg_optionnels] [cible ...] arg_optionnels

De nombreuses options peuvent ici être choisies. Citons

-f pour indiquer un nom particulier de fichier de dépendances. Par défaut la commande prend dans l’ordre le fichier de nom makefile puis de nom Makefile.

-n pour d’afficher le liste des commandes qui vont être exécutées mais sans le faire.

-r pour ignorer les règles de dépendance par défaut cible : c’est la référence du fichier (programme) à reconstruire. Par défaut c’est la première référence rencontrée dans le fichier qui est prise.

Gmake est un produit GNU make (General Public Licence) qui permet de différencier ce produit des autres make que l’on peut trouver sur les plateformes unix.

Dernière modification le : 8 juillet 2014
CINES