summaryrefslogtreecommitdiff
path: root/makefile
blob: 31a576282e5bea8b683c1b47f928da1dc7ba16d0 (plain)
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
#编译器版本
CC = gcc
CXX = g++ -std=c++11
#附加头文件目录
INCS_DIR =
#附加包含库目录
LIBS_DIR =
#附加包含库文件
DEF_LIBS =
STA_LIBS =
DYN_LIBS =
#预定义宏
DEFINE = -D MAKEFILE_ENVIRONMENT
#编译选项
CFLAGS = -g -Wall -O3

#目标生成文件名
TARGETS = DomainDeal
#源文件
C_SRCS = $(wildcard *.c */*.c)
CPP_SRCS = $(wildcard *.cpp */*.cpp)
#中间文件
C_OBJS = $(patsubst %.c,%.o,$(C_SRCS))
CPP_OBJS = $(patsubst %.cpp,%.o,$(CPP_SRCS))
#依赖头文件
HEADS = $(wildcard *.h */*.h *.hpp */*.hpp)


#生成目标
$(TARGETS): $(C_OBJS) $(CPP_OBJS)
	$(CXX) -o $@ $(CFLAGS) $(LIBS_DIR) $(C_OBJS) $(CPP_OBJS) \
	$(DEF_LIBS) -Wl,-Bstatic $(STA_LIBS) -Wl,-Bdynamic $(DYN_LIBS)
	
#c生成.o
$(C_OBJS): %.o: %.c $(HEADS)
	$(CC) -c $(CFLAGS) $(INCS_DIR) $(DEFINE) $(patsubst %.o,%.c,$@)
#cpp生成.o
$(CPP_OBJS): %.o: %.cpp $(HEADS)
	$(CXX) -c $(CFLAGS) $(INCS_DIR) $(DEFINE) $(patsubst %.o,%.cpp,$@)
	
	
#清理文件命令
.PHONY: clean
clean: 
	-rm $(TARGETS) $(C_OBJS) $(CPP_OBJS)

#重构文件命令
.PHONY: rebuild
rebuild: clean $(TARGETS)