-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
73 lines (55 loc) · 1.36 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
# Répertoires
BINDIR=./BIN
INCLUDEDIR=./INCLUDE
LIBDIR=./LIB
OBJDIR=./OBJ
SRCDIR=./SRC
LISTELIB=libliste
GRAPHELIB=libgraphe
#
CC=gcc
IFLAGS=-I$(INCLUDEDIR)
LFLAGS=-L$(LIBDIR)
LLIB=-lgraphe -lliste
SL=ar rcs
#
LISTEOBJ=$(OBJDIR)/MaListe.o
GRAPHEOBJ=$(OBJDIR)/Graphe.o
EXEC=Run
MAIN=$(BINDIR)/$(EXEC)
# Cible proncipale
all: libs $(MAIN)
#
$(MAIN): $(BINDIR)
$(CC) ${SRCDIR}/main.c ${SRCDIR}/interface.c $(IFLAGS) $(LFLAGS) $(LLIB) -o $@
#########################################
# BIBLIOTHÈQUES
#########################################
# Règle de construction des bibliothèques
libs: $(LISTELIB) $(GRAPHELIB)
# Règle de construction de MaListe.a
$(LISTELIB): $(LISTEOBJ) $(LIBDIR)
$(SL) $(LIBDIR)/[email protected] $<
# Règle de construction de Graphe.a
$(GRAPHELIB): $(GRAPHEOBJ) $(LIBDIR)
$(SL) $(LIBDIR)/[email protected] $<
# Règle de construction de MaListe.o
$(LISTEOBJ): $(OBJDIR)/%.o : $(SRCDIR)/%.c $(INCLUDEDIR)/%.h $(OBJDIR)
$(CC) $(IFLAGS) -c $< -o $@
# Règle de construction de Graphe.o
$(GRAPHEOBJ): $(OBJDIR)/%.o : $(SRCDIR)/%.c $(INCLUDEDIR)/%.h $(OBJDIR)
$(CC) $(IFLAGS) -c $< -o $@
#########################################
# Règles de construction des répertoires
$(BINDIR):
mkdir $(BINDIR)
$(OBJDIR):
mkdir $(OBJDIR)
$(LIBDIR):
mkdir $(LIBDIR)
#########################################
# Règles de nettoyage
clean:
rm $(OBJDIR)
veryclean: clean
rm $(LIBDIR)