-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
68 lines (46 loc) · 1.08 KB
/
Makefile
File metadata and controls
68 lines (46 loc) · 1.08 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
NAME = graph
SRC_DIR = $(CURDIR)/src
OBJ_DIR = $(CURDIR)/obj
INCLUDE_DIR = $(CURDIR)/include
SRC = $(SRC_DIR)/main.cpp\
$(SRC_DIR)/graph.cpp
OBJ = $(SRC:.cpp=.o)
OBJ := $(subst $(SRC_DIR),$(OBJ_DIR),$(OBJ))
CXX = clang++
INCLUDE = -I $(INCLUDE_DIR)
LDFLAGS =
DEBUG = no
ifeq ($(DEBUG), no)
OPTI = -O3
else
OPTI = -g
endif
CXXFLAGS = -Wall -Wextra -Werror $(INCLUDE) $(OPTI)
ECHO = /bin/echo
$(NAME): printflag $(OBJ)
@$(ECHO) "$(BLUE)Linking $(NAME)...$(NOCOLOR)"
@$(CXX) $(CXXFLAGS) $(OBJ) -o $(NAME) $(LDFLAGS)
@$(ECHO) "$(GREEN)Done.$(NOCOLOR)"
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
@$(ECHO) "Compiling `basename $<`"
@$(CXX) $(LDFLAGS) $(CXXFLAGS) $< -c -o $@
all: $(NAME)
clean:
@rm -f $(OBJ)
@$(ECHO) "Removed $(OBJ)"
fclean:
@rm -f $(NAME)
@$(ECHO) "Removed $(NAME)"
@rm -f $(OBJ)
@$(ECHO) "Removed $(OBJ)"
re: fclean print all
printflag:
@$(ECHO) "---FLAGS---"
@$(ECHO) "$(CXXFLAGS)"
@$(ECHO) "-----------"
print:
@$(ECHO) "---Making all---"
debug: fclean print
@make -s DEBUG=yes
release: fclean print
@make -s DEBUG=no