next up previous
Next: Instructions au pré-processeur et Up: Comment compiler Previous: Plusieurs fichiers

Makefile

On peut inclure toutes les instructions de compilation (et de linkage) dans un fichier nommé Makefile et se contenter de taper la commande make. La syntaxe d'un fichier Makefile est la suivante:

# le # est le symbole du commentaire dans les Makefile

#Préciser que l'on veut tous les warnings
CXXFLAGS+=-Wall 

#Au choix:
#1 - Si l'on veut débugguer le programme
CXXFLAGS+=-g -D_DEBUG
#2 - Si l'on veut optimiser l'exécutable (pour qu'il soit le plus rapide possible) 
#CXXFLAGS+=-Os -funroll-all-loops -DNDEBUG

#Préciser où chercher les .a et .so
LDLIBS+=-lm -L. 

#Où chercher les .h
CXXFLAGS+=-I. 

#Compiler les .cpp (les écarts à la ligne sont une tabulation)
%.o: %.cpp
        $(CXX) -c $(CXXFLAGS) -o $@ $*.cpp

#Remarque: CXX est le compilateur, g++ par défaut. 
#Vous pouvez le modifier pour préciser une version particulière de g++.

#Que compiler par défaut
PROG=mon_executable
all:: $(PROG)

#Liste de fichiers.o à inclure
OBJ=main.o aux.o

#Quand quels fichiers ont été modifiés faut-il recompiler les .o ?
$(OBJ): aux.h Makefile

#Comment compiler (linker) mon_executable
$(PROG): $(OBJ) 
        $(CXX) -o $(PROG) $(OBJ) $(LDLIBS)

#Faire le ménage quand on tape make clean
clean:
        rm -f $(PROG) $(OBJ)



Guillaume Charpiat 2006-12-07