Make 1 Les besoins 2 Définition 3 Makefile 4 Optimisation 5 Exemple de Makefile 6 Prototype 7 Autres outils © BTS II 2002 [tv]
1. Les besoins ● Compilation séparée automatisée ● Optimisation du temps et des ressources : ne compiler que le nécessaire Lorsque le programme est composé de plusieurs modules ou fichiers :
2. Définition Make permet notamment l'automatisation de la phase de compilation. Make lance l'exécution du fichier Makefile qui se trouve dans le répertoire courant.
3. Makefile Les opérations nécessaires à la compilation de l'application, c'est-à-dire : Makefile est un fichier qui décrit : Les dépendances Les règles à appliquer lorsque les dépendances ne sont plus respectées
4. Avantages Assurer la cohérence de l'ensemble de l'application en recompilant seulement les modules qui dépendent d'une modification Permettre un gain de temps considérable Mémoriser les règles de compilation
5. Exemple Makefile Utilisation : make make client make clean OBJS = client.o creer_socket.o //on déclare une «variable» client: ${OBJS}//utilisation de la «variable» gcc ${OBJS} -o client client.o:client.c//on indique la dépendance gcc -c client.c//et la commande associée creer_socket.o:creer_socket.c gcc -c creer_socket.c//on utilise obligatoirement une //tabulation clean: rm -f ${OBJS} core
6. Prototype #mini prototype pouvant servir de base #On utilise le compilateur gcc CC = gcc CDEBUG = -g INCDIR = -I /usr/include CFLAGS = $(CDEBUG) $(INCDIR) -O MKDEP = -M LIBDIR = -L /usr/lib LIBS = -lpthread DESTDIR = /usr/local OBJ1 = fichier1.o OBJ2 = fichier2.o SRC1 = fichier1.c SRC2 = fichier2.c OBJS = $(OBJ1) $(OBJ2) SRC = $(SRC1) $(SRC2) all : monprog monprog : $(OBJS) $(CC) $(CFLAGS) $(LIBDIR) $(OBJS) $(LIBS) -o install : all install -d $(DESTDIR) install monprog $(DESTDIR)/bin $(OBJ1) :$(SRC1) $(CC) $(CFLAGS) -c $(SRC1) $(OBJ2) :$(SRC2) $(CC) $(CFLAGS) -c $(SRC2) clean : rm -f core $(OBJS)
7. Autres outils gmake autoconf et automake qui permettent de générer des fichiers automatiquement en tenant compte de la plateforme utilisée