-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile-example
More file actions
85 lines (70 loc) · 1.77 KB
/
Makefile-example
File metadata and controls
85 lines (70 loc) · 1.77 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#######################
# 1.makefile工程模板
# 2.编译可执行程序
# 3.生成静态库
# 4.生成动态库
# 5.条件编译宏
# 注:注释内容单独一行,变量赋值后不要有空格等
######################
#版本
VERSION = 1.0.0
#生成可执行程序存放路径
BIN = bin
#生成库路径
LIB_PATH = lib
#生成头文件路径
INC_PATH = inc
#生成可执行程序
TARGET = $(BIN)/dev_mod_hc.$(VERSION)
#生成静态库
LIB_STATIC = $(LIB_PATH)/libbhdev.a.$(VERSION)
#生成动态库
LIB_DYNAMIC = $(LIB_PATH)/libbhdev.so.$(VERSION)
#源文件
SRCS = $(wildcard src/*.c)
#头文件路径
IFLAGS = -I./inc
IFLAGS += -I./install-arm/include
#链接库文件路径
LDFLAGS_PATH = -L./install-arm/lib
#链接库文件
LDFLAGS = -lpthread ./install-arm/lib/libssl.a ./install-arm/lib/libcrypto.a -ldl -lpopt
#所有目标文件
OBJS = $(SRCS:%.c=$(BIN)/%.o)
#编译选项
CFLAGS = -g
CFLAGS += -fPIC
#所有编译选项
GFLAGS = $(CFLAGS) $(IFLAGS)
#GFLAGS = $(CFLAGS) $(IFLAGS) #所有编译选项
#所有链接选项
LD_GFLAGS = $(LDFLAGS) $(LDFLAGS_PATH)
#编译工具链
CC = arm-linux-gcc
AR = arm-linux-ar
all: $(TARGET) $(LIB_STATIC) $(LIB_DYNAMIC)
$(TARGET): $(OBJS) main.o
@$(CC) -o $@ $^ $(LDFLAGS) $(LDFLAGS_PATH)
#$(STRIP) $@
#$(STRIP) -x -R .note -R .comment $@
@echo [CC] compile finish
$(LIB_STATIC): $(OBJS)
@echo ========= static lib ==============
@mkdir -p $(LIB_PATH)
@$(AR) crv $@ $^
$(LIB_DYNAMIC): $(OBJS)
@echo ========= dynamic lib ==============
@mkdir -p $(LIB_PATH)
@$(CC) $(CFLAGS) -shared -o $@ $^
%.o:%.c
@$(CC) $(GFLAGS) -o $@ -c $<
$(BIN)/%.o:%.c
@mkdir -p $(BIN)
@mkdir -p $(dir $@)
@$(CC) $(GFLAGS) -c $^ -o $@
@echo [CC] $^
install:
@echo install finish
.PHONY: clean
clean:
rm -rvf $(BIN)/* main.o $(LIB_PATH)/*