# # Exemple de Makefile # Cree l'executable myprog a partir des fichiers myprog.cc globals.cc zorro.cc # # Nom de l'executable a creer EXEC= myprog # Liste des fichiers source SOURCES= myprog.cc globals.cc zorro.cc # Liste des fichiers objets generes automatiquement a partir de ${SOURCES} # en remplacant chaque .cc par un .o (a modifier si l'extension est .cpp) OBJETS=${SOURCES:%.cc=%.o} ########################################### # Definition des programmes utilitaires # Compilateur C++ # NB: certaines configs utilisent la macro CXX, d'autres CCC => on initialise les deux CXX= g++ CCC= ${CXX} # Options du compilateur C++ # -g permet de debugger, -O optimise, -Wall affiche les erreurs CXXFLAGS= -g -Wall CCFLAGS= ${CXXFLAGS} # Options de l'editeur de liens LDFLAGS= # librairies a utiliser LDLIBS= # Exemple plus complique specifiant ou chercher les headers # et les librairies necessaires pour l'edition de liens # CXXFLAGS= -g -Wall -I/usr/local/qt/include # CCFLAGS= ${CXXFLAGS} # LDLIBS = -L/usr/local/qt/lib -lqt ########################################## # Regles de construction/destruction des .o et de l'executable # (depend sera un fichier contenant les dependances) all: depend ${EXEC} ${EXEC}: ${OBJETS} ${CXX} -o ${EXEC} ${LDFLAGS} ${OBJETS} ${LDLIBS} install: -@cp -p -f $(EXEC) $(DESTBIN) clean: -@rm -f $(EXEC) $(OBJETS) depend core 1>/dev/null 2>&1 ########################################### # Regles implicites .SUFFIXES: .cpp .cxx .cc .C .c .cpp.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< .cxx.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< .cc.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< .C.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< .c.o: $(CC) -c (CFLAGS) $(INCPATH) -o $@ $< ############################################# # Gestion des dependances : creation automatique des dependances # en utilisant l'option -MM de gcc # (attention certains compilos n'ont pas cette option) depend: ${SOURCES} Makefile ${CXX} -MM ${SOURCES} > depend # Inclusion du fichier des dependances -include depend