-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile
83 lines (63 loc) · 1.79 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
#
# Course ICP @ FIT VUT Brno, 2016
# ICP 2016 Project - Othello
#
.PHONY: all cli gui clean run pack
#
# Env
#
PROJ = hra2016
PROJ_CLI = $(PROJ)-cli
PROJ_GUI = $(PROJ)
QMAKE = qmake
CXX = g++
CFLAGS = -std=c++11 -Wall -Wextra -pedantic -O2
DOXYGEN = doxygen
PACK_ZIP = xposto02-xplask00.zip
SRC_PATH = $(shell pwd)/src
COMMON_PATH = $(SRC_PATH)/common
CLI_PATH = $(SRC_PATH)/cli
GUI_PATH = $(SRC_PATH)/gui
BOOST_PATH = $(SRC_PATH)/boost
BOOST_LIB_PATH = $(BOOST_PATH)/lib
COMMON_SRC_FILES = $(wildcard $(COMMON_PATH)/*.cpp)
COMMON_HEADER_FILES = $(wildcard $(COMMON_PATH)/*.h)
COMMON_OBJ_FILES = $(patsubst %.cpp, %.o, $(COMMON_SRC_FILES))
CLI_SRC_FILES = $(wildcard $(CLI_PATH)/*.cpp)
CLI_HEADER_FILES = $(wildcard $(CLI_PATH)/*.h)
CLI_OBJ_FILES = $(patsubst %.cpp, %.o, $(CLI_SRC_FILES))
GUI_SRC_FILES = $(wildcard $(GUI_PATH)/*.cpp)
GUI_HEADER_FILES = $(wildcard $(GUI_PATH)/*.h)
GUI_OBJ_FILES = $(patsubst %.cpp, %.o, $(GUI_SRC_FILES))
INC_PATH = -isystem$(BOOST_PATH) -I$(COMMON_PATH)
LIB_PATH = -L$(BOOST_LIB_PATH)
LINK_LIB = -lboost_serialization
#
# Compilation
#
all: $(PROJ_CLI) $(PROJ_GUI)
cli: $(PROJ_CLI)
gui: $(PROJ_GUI)
$(PROJ_CLI): $(COMMON_OBJ_FILES) $(CLI_OBJ_FILES)
$(CXX) $(CFLAGS) $^ $(LIB_PATH) -o $(PROJ_CLI) $(LINK_LIB)
$(PROJ_GUI): $(COMMON_OBJ_FILES) $(GUI_SRC_FILES) $(GUI_HEADER_FILES)
@cd $(GUI_PATH) && $(QMAKE) && make
@mv $(GUI_PATH)/$(PROJ_GUI) .
$(CLI_PATH)/main.o: $(CLI_PATH)/main.cpp
$(CXX) $(CFLAGS) $(INC_PATH) -c $< -o $@
%.o: %.cpp %.h
$(CXX) $(CFLAGS) $(INC_PATH) -c $< -o $@
#
# Other stuff
#
doxygen:
$(DOXYGEN) $(SRC_PATH)/doxyConf
clean:
-@cd $(GUI_PATH) && make clean
rm -f $(CLI_PATH)/*.o $(PROJ_CLI) $(PROJ_GUI)
rm -rf doc/
rm -f $(PACK_ZIP)
pack: clean
zip -r $(PACK_ZIP) src/ examples/ README.txt Makefile
run: all
(./$(PROJ_GUI) &) && ./$(PROJ_CLI)