-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
84 lines (69 loc) · 2.48 KB
/
Makefile
File metadata and controls
84 lines (69 loc) · 2.48 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
CC ?= g++
CFLAGS ?= -Wall -Wextra -Werror -std=c++17 -g -Og
LDLIBS ?= -lSDL2 -lstdc++ -lm
INCLUDE_PATH = ./include
TARGET = pacman
SRCDIR = src
OBJDIR = obj
BINDIR = bin
SOURCES := $(wildcard $(SRCDIR)/*.cpp)
INCLUDES := $(wildcard $(INCLUDE_PATH)/*.h)
OBJECTS := $(SOURCES:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o)
$(BINDIR)/$(TARGET): $(OBJECTS)
mkdir -p $(BINDIR)
$(CC) -o $@ $^ $(CFLAGS) $(LDLIBS)
@echo "\033[92mCompiled\033[0m"
$(OBJECTS): $(OBJDIR)/%.o : $(SRCDIR)/%.cpp $(INCLUDES)
mkdir -p $(OBJDIR)
$(CC) -o $@ -c $< $(CFLAGS) -isystem$(INCLUDE_PATH)
.PHONY: all tests clean cov
clean:
@echo "\033[93mCleaning...\033[0m"
rm -rf obj/*.o
rm -rf tests/obj/*.o
rm -f $(BINDIR)/$(TARGET)
rm -rf html
rm -rf *.tar
@echo "\033[92mCleaned\033[0m"
debug:
@make clean -s 1>/dev/null
@echo "\033[93mCompilation...\033[0m"
@make CFLAGS="-Wall -Wextra -Werror -std=c++17 -DDEBUG" -s 2>/dev/null || (echo "\033[91mError on compilation, re-run with \"make\" to see the errors\033[0m" && exit 1)
@echo "\033[93mRun Application in debug mode...\033[0m"
./$(BINDIR)/$(TARGET)
@echo "\033[92mExit properly\033[0m"
doc:
@echo "\033[93mBuilding documentation...\033[0m"
@cp -r ./assets ./html
@doxygen > /dev/null 2>&1
@echo "\033[92mDocumentation built\033[0m"
@xdg-open html/index.html # Linux
run:
@make clean -s 1>/dev/null
@echo "\033[93mCompilation...\033[0m"
@make -s 2>/dev/null || (echo "\033[91mError on compilation, re-run with \"make\" to see the errors\033[0m" && exit 1)
@echo "\033[93mRun Application...\033[0m"
./$(BINDIR)/$(TARGET)
@echo "\033[92mExit properly\033[0m"
valgrind:
@make clean -s 1>/dev/null
@echo "\033[93mCompilation...\033[0m"
@make -s 2>/dev/null || (echo "\033[91mError on compilation, re-run with \"make\" to see the errors\033[0m" && exit 1)
@echo "\033[93mRun Application with valgrind...\033[0m"
valgrind --leak-check=full --show-leak-kinds=all ./$(BINDIR)/$(TARGET)
@echo "\033[92mExit properly\033[0m"
valgrind-segfault:
@make clean -s 1>/dev/null
@echo "\033[93mCompilation...\033[0m"
@make -s 2>/dev/null || (echo "\033[91mError on compilation, re-run with \"make\" to see the errors\033[0m" && exit 1)
@echo "\033[93mRun Application with valgrind...\033[0m"
valgrind --show-possibly-lost=yes --show-reachable=yes ./$(BINDIR)/$(TARGET)
@echo "\033[92mExit properly\033[0m"
tar:
@make clean -s 1>/dev/null
@echo "\033[93mCreating tarball...\033[0m"
@tar -czf PacManCpp.tar *
@echo "\033[92mTarball created\033[0m"
all:
make
make doc