-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
61 lines (40 loc) · 1.9 KB
/
Copy pathMakefile
File metadata and controls
61 lines (40 loc) · 1.9 KB
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
# $@ = nom cible
# $< = nom premiere dépendance
# $^ = liste des dépendances
# $? = liste des dépendances plus récentes que la cible (? pas capté)
# $* = nom du fichier dans extension
# --------------------------------------------- VARIABLES -------------------------------------------
CXX=gcc
COMPILE_FLAGS= -m64 -g -Wall -I include
# LINK_FLAGS= -lSDL2main -lSDL2 -lSDL2_image -lm
LINK_FLAGS=-lSDL2 -lm
SRC=src
OBJ=obj
#tous les fichiers .c dans le dossier src:
SRCS=$(wildcard $(SRC)/*.c)
#remplace les occurences d'un src/fichier.c par un obj/fichier.o, pour tous les fichiers du dossier src
# => Dans le dossier obj, fichiers ayant le même nom que les fichiers du dossier src, mais avec l'extension .o
OBJS=$(patsubst $(SRC)/%.c, $(OBJ)/%.o, $(SRCS))
# --------------------------------------------- BINARIES -------------------------------------------
DEBUG_BIN=bin/debug/game
debug:$(DEBUG_BIN) #on veut créer l'éxécutable bin/debug/main
RELEASE_BIN=bin/release/game
release: COMPILE_FLAGS= -m64 -O2 -Wall -I include
release: $(RELEASE_BIN) #on veut créer l'éxécutable bin/release/main
# --------------------------------------------- COMMANDS -------------------------------------------
# ~2e COMMANDE:
#Création de l'éxécutable BIN à partir de OBJS: fichiers.o de ./obj, ayant les mêmes noms que les fichiers.c de ./src (linking)
$(DEBUG_BIN): $(OBJS)
$(CXX) $(OBJ)/*.o -o $@ $(LINK_FLAGS)
$(RELEASE_BIN): $(OBJS)
$(CXX) $(OBJ)/*.o -o $@ -s $(LINK_FLAGS)
#equivaut à: g++ obj/fichier1.o obj/fichier2.o obj/fichier3.o -o bin/.../main
# ~1ere COMMANDE:
#Création des fichiers objets à partir des fichiers.c du dossier ./src (compiling)
$(OBJ)/%.o: $(SRC)/%.c
mkdir -p bin bin/debug bin/release obj
$(CXX) -c $< $(COMPILE_FLAGS) -o $@
#equivaut à: g++ -c src/fichier1.cpp src/fichier2.cpp src/fichier3.cpp -o obj/fichier1.o obj/fichier2.o obj/fichier3.o
# ~Nettoyage:
clean:
rm $(OBJ)/*.o