一个Makefile使用实例

[tab] 是制表符

# 指定编译器
CC = gcc

# CFLAG包括头文件目录
CFLAGS = -g -Wall

# 头文件查找路径
INC = -Iport -I../../modbus/rtu \
  -I../../modbus/ascii -I../../modbus/include -I../../modbus/tcp

# 静态链接库
LDFLAGS = 
LDLIBS = -lpthread
# 目标
TARGET = tcpmodbus
# 源文件
SRC = demo.c port/portother.c \
 port/portevent.c port/porttcp.c \
 ../../modbus/mb.c ../../modbus/tcp/mbtcp.c \
 ../../modbus/functions/mbfunccoils.c \
 ../../modbus/functions/mbfuncdiag.c \
 ../../modbus/functions/mbfuncholding.c \
 ../../modbus/functions/mbfuncinput.c \
 ../../modbus/functions/mbfuncother.c \
 ../../modbus/functions/mbfuncdisc.c \
 ../../modbus/functions/mbutils.c

# 源文件编译为目标文件
OBJS = $(SRC:.c=.o)

# 链接为可执行文件  $^ 代表所有的依赖文件
$(TARGET): $(OBJS)
[tab]$(CC) $^ -o $@ $(LDFLAGS) $(LDLIBS)

# 清除可执行文件和目标文件
clean:
[tab]rm -f $(OBJS)
[tab]rm -f $(TARGET)

# 编译规则 加入头文件 $@代表目标文件 $< 代表第一个依赖文件
%.o:%.c
[tab]$(CC) $(CFLAGS) $(INC) -o $@ -c $<

#   【1】编译时加入了头文件查找路径。
#   【2】链接时加入了共享库。

#【1】LDIBS指定共享库,共享库以 -l 为前缀。
#【2】LDFLAGS指定共享库查找路径,路径以 -L 为前缀。



你可能感兴趣的:(一个Makefile使用实例)