-
Notifications
You must be signed in to change notification settings - Fork 0
/
makefile
executable file
·91 lines (70 loc) · 1.63 KB
/
makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
.SILENT:
.PHONY : compil run clean suppr valgrind gdb
# Fichier Makefile generique
SHELL := /bin/bash
#--- VARIABLES ---
#Fichiers
DIR = bin
FICHIER_SORTIE := $(DIR)/analog
CPP := $(wildcard *.cpp)
LIBRAIRIES :=
CMD =
O := $(patsubst %,$(DIR)/%,$(CPP:.cpp=.o))
DEP :=$(O:.o=.d)
#Variables de compilation
COMPILATEUR := g++
COMPILATEUR_FLAGS := -Wall -W -ansi -pedantic -std=c++11
DEBUG := -g
DEPENDANCES := -MMD
#Variables d'edition de liens
EDITION_DE_LIENS := g++
EDITION_FLAGS :=
#Variables de commande
ECHO := echo
RM := rm
RM_FLAGS := -f -r
CLEAN := clean
MAKE := make
VALGRIND := valgrind --leak-check=yes
GDB := gdb
#--- COMMANDES ---
compil : $(FICHIER_SORTIE)
test : $(FICHIER_SORTIE)
cd Tests; ./mktest.sh; cd ..
#Edition de Lien
$(FICHIER_SORTIE) : $(O)
@echo "Edition de lien de $(FICHIER_SORTIE)"
$(EDITION_DE_LIENS) -o $(FICHIER_SORTIE) $(EDITION_FLAGS) $(O) $(LIBRAIRES)
#Execution
run : $(FICHIER_SORTIE)
@echo "Execution ..."
./$(FICHIER_SORTIE) $(CMD)
#Nettoyage
clean :
$(MAKE) suppr
$(MAKE) compil
#Suppression
suppr :
@echo "Nettoyage ..."
$(RM) $(RM_FLAGS) $(FICHIER_SORTIE) $(DIR)
#Valgrind
valgrind :
$(MAKE) suppr
$(MAKE) compil
@echo "Valgrind de $(FICHIER_SORTIE) ..."
$(VALGRIND) ./$(FICHIER_SORTIE)
#GDB
gdb :
$(MAKE) suppr
$(MAKE) compil
@echo "GdB de $(FICHIER_SORTIE) ..."
$(GDB) ./$(FICHIER_SORTIE) -x input.gdb
#on inclut toutes les dependances des fichiers .cpp
-include $(DEP)
#Pattern de Compilation
$(DIR)/%.o : %.cpp | $(DIR)
@echo " Compilation de $<"
$(COMPILATEUR) $(COMPILATEUR_FLAGS) $(DEBUG) $(DEPENDANCES) -o $@ -c $<
#Creation du repertoire d'objets au besoin
$(DIR) :
mkdir -p $@