summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2011-03-11 20:13:06 +0000
committerJakob Odersky <jodersky@gmail.com>2011-03-11 20:13:06 +0000
commitcc47a21b3c70a8f91ef945e6c127d4f2e3b007da (patch)
tree6fe420b2e67a505e1cd8eb4f6c14b0e1c151a60d /Makefile
parentdb6a4e8f183b7fb1492b5eef7d91ab05509a8311 (diff)
downloadvhc-cc47a21b3c70a8f91ef945e6c127d4f2e3b007da.tar.gz
vhc-cc47a21b3c70a8f91ef945e6c127d4f2e3b007da.tar.bz2
vhc-cc47a21b3c70a8f91ef945e6c127d4f2e3b007da.zip
Mise en place d'un systeme de Makefiles. Lancer `make all' _dans_le_repertoire_du_projet_ pour une compilation du projet.
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile60
1 files changed, 40 insertions, 20 deletions
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