From cc47a21b3c70a8f91ef945e6c127d4f2e3b007da Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Fri, 11 Mar 2011 20:13:06 +0000 Subject: Mise en place d'un systeme de Makefiles. Lancer `make all' _dans_le_repertoire_du_projet_ pour une compilation du projet. --- Makefile | 60 ++++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 40 insertions(+), 20 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 42b97b2..cd77b41 100644 --- a/Makefile +++ b/Makefile @@ -1,33 +1,53 @@ -CC := g++ -LD := g++ +######################################################################### +# Makefile principale # +#=======================================================================# +# Les variables suivantes sont definis pour des makefiles plus bas. # +# BASEDIR repertoire de base du projet # +# SRCDIR repertoire contenant le code source # +# BINDIR repertoire ou sont places toutes objets compiles # +######################################################################### -MODULES := vhc vhctest -SRC_DIR := $(addprefix src/,$(MODULES)) -BUILD_DIR := $(addprefix build/,$(MODULES)) -SRC := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.cc)) -OBJ := $(patsubst src/%.cc,build/%.o,$(SRC)) -INCLUDES := $(addprefix -I,$(SRC_DIR)) +# Choix du compilateur +CXX = g++ -vpath %.cc $(SRC_DIR) +# Repertoire de base +export BASEDIR = $(abspath .) -define make-goal -$1/%.o: %.cc - $(CC) $(INCLUDES) -c $$< -o $$@ -endef +# Repertoire de source +export SRCDIR = $(BASEDIR)/src -.PHONY: all checkdirs clean +# Repertoire de sortie +export BINDIR = $(BASEDIR)/bin -all: checkdirs build/vhcbin +# Partie commentée : choisissez les options que vous voulez avoir +# en décommentant la/les lignes correspondantes +# +# CXXFLAGS += -ansi -pedantic -Wall # pour les purs et durs +# CXXFLAGS += -g # pour debugger +# CXXFLAGS += -pg # pour profiler +# LDFLAGS += -pg # pour profiler +# CXXFLAGS += -O2 # pour optimiser la vitesse -build/vhcbin: $(OBJ) - $(LD) $^ -o $@ +.PHONY: all checkdirs build clean +all: checkdirs build test-build -checkdirs: $(BUILD_DIR) +# Compile les fichiers source principales +build: + @echo $(BINDIR) + make all -C $(SRCDIR)/vhc -$(BUILD_DIR): +# Compile les tests +test-build: + make all -C $(SRCDIR)/vhctest + +# Verifie l'existance du repertoire de sortie +checkdirs: $(BINDIR) + +# Cree le repertoire de sortie +$(BINDIR): @mkdir -p $@ clean: - @rm -rf $(BUILD_DIR) + @rm -rf $(BINDIR) \ No newline at end of file -- cgit v1.2.3