-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile_old
60 lines (45 loc) · 1.22 KB
/
Makefile_old
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
TARGETS = benc
CXXLIBFILES = encoder decoder tree
CXXALLFILES = benc $(CXXLIBFILES)
BINDIR := ./bin
LIBDIR := ./lib
OBJDIR := ./build
INCDIR := ./include
SRCDIR := ./src
output := $(shell mkdir -p $(BINDIR) $(LIBDIR) $(OBJDIR))
OLIBFILES = $(patsubst %, $(OBJDIR)/%.o, $(CXXLIBFILES))
OALLFILES = $(patsubst %, $(OBJDIR)/%.o, $(CXXALLFILES))
EXEFILES = $(patsubst %, $(BINDIR)/%, $(TARGETS))
LIBFILES = $(LIBDIR)/libbenc.a
# dependency files
DFILES = $(patsubst %.o, %.d, $(OFILES))
CXXFLAGS = -I$(INCDIR) -MMD -std=c++17 -Wall -Werror
LDFLAGS =
# make config
.DEFAULT_GOAL = all
.PRECIOUS: $(OALLFILES)
.PHONY: all clean
AR = ar
ARFLAGS = -rv
# build targets
all:
@echo "RELEASE BUILD"
all: CXXFLAGS += -O3
all: $(EXEFILES) $(LIBFILES)
debug:
@echo "DEBUG BUILD"
debug: CXXFLAGS += -DDEBUG -g
debug: $(EXEFILES) $(LIBFILES)
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
@echo "[CXX] $< --> $@"
@$(CXX) $< -o $@ -c $(CXXFLAGS)
$(LIBDIR)/%.a: $(OLIBFILES)
@echo "Creating static library..."
@$(AR) $(ARFLAGS) $@ $^
$(BINDIR)/%: $(OALLFILES)
@echo "[LD] $^ --> $@"
@$(CXX) $^ -o $@ $(LDFLAGS)
clean:
@echo "Cleaning up..."
@rm -rf $(BINDIR) $(LIBDIR) $(OBJDIR)
-include $(DFILES)