############################################## ## ## ## CPP Makefile - v0.1 ## ## hiko-seijuro ## ## http://hiko-seijuro.developpez.com ## ## hiko-seijuro@redaction-developpez.com ## ## ## ## ---------------------------------------- ## ## - options lors du makefile ## ## - profile=yes ## ## - debug=yes ## ## ## ## - L'utisation du makefile suppose la ## ## la structure arborescente suivante : ## ## / ## ## |-- bin (contenant la cible) ## ## |-- build (contenant les .o) ## ## |-- include (contenant les .h) ## ## |-- src (contenant les .cpp) ## ## ## ############################################## ########################## ### Commandes ################################## CC = g++ LD = $(CC) ########################## ### Repertoires ################################## SRCDIR = src INCDIR = include BUILDDIR = build BINDIR = bin ########################## ### Cibles ################################## EXE = $(BINDIR)/client SRCS = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*)) TARGETS = $(subst $(SRCDIR),$(BUILDDIR),$(SRCS:.cpp=.o)) INCLUDES = $(foreach dir, $(INCDIR), $(wildcard $(dir)/*)) ########################## ### Flags ################################## ifeq ($(debug),yes) DEBFLAG = -g endif ifeq ($(profile),yes) PROFLAG = -pg endif CFLAGS = -W -Wall $(PROFLAG) $(DEBFLAG) LFLAGS = $(PROFLAG) ########################## ### Regles ################################## ifeq ($(debug),yes) all : cleanall $(EXE) else all : $(EXE) endif exe : $(EXE) $(EXE) $(EXE) : $(TARGETS) $(INCLUDES) $(LD) -o $(EXE) $(TARGETS) $(LFLAGS) $(BUILDDIR)/%.o : $(SRCDIR)/%.cpp $(CC) -o $@ -c $< $(CFLAGS) -I$(INCDIR) clean : rm -rf $(TARGETS) cleanall : clean rm -rf $(EXE)