Makefile模板升级版

重新写了一个更适用的Makefile模板

######################################################################
# makefile 模版
#
######################################################################

##############################编译器#################################
CC=gcc
##############################后缀名#################################
EXTENSION=c
#########################源文件路径#################################
SRC_DIR =. sub abc #包含了当前目录 (‘.’表示当前目录) sub abc 三个目录
#########################头文件路径#################################
INCLUDE_DIR = include src src1
##########################宏定义####################################
DEFINE= DEBUG=1 TEST
######################目标文件路径#################################
PROGRAM=test1
###################中间文件文件路径################################
OBJS_DIR =objs
DEPS_DIR=deps
###################lib文件路径###############################
LINK_DIR= tet SDF
###################lib文件###################################
LINK_LIB= -lpthread
########################编译动态库###################################
#LIBCFLAGS=-fPIC        #编译libX.so 时需要
#LIBLDFLAGS=shared  #链接 libX.so 时需要
###################OBJ文件及路径#############################
#SRC=$(wildcard ./*.c sub/*.c abc/*c)
SRC=$(wildcard $(addsuffix /*.$(EXTENSION),$(SRC_DIR)))
OBJS=$(patsubst %.$(EXTENSION),$(OBJS_DIR)/%.o,$(notdir $(SRC)))
DEPS=$(patsubst $(OBJS_DIR)/%.o, $(DEPS_DIR)/%.d, $(OBJS))
########################编译选项###################################
CFLAGS = -Wall -W -g $(LIBCFLAGS)
INCLUDE=$(addprefix  -I,$(INCLUDE_DIR))
CFLAGS += $(addprefix  -D,$(DEFINE))
#####################链接选项###################################
LDFLAGS=$(LIBLDFLAGS)
LDFLAGS=$(addprefix  -L,$(LINK_DIR))
LDFLAGS += $(LINK_LIB)
SEARCH_FLAGG=-Wl,-rpath -Wl,
LINK_SEARCH_PATH=$(addprefix  $(SEARCH_FLAGG),$(LINK_DIR))
#vpath %.c dir1:dir2: 指定%.c搜索路径
vpath %.$(EXTENSION) $(addsuffix :,$(dir $(patsubst %.$(EXTENSION),%.o,$(SRC)))) 

###################编译目标######################################
.PHONY: all clean 

all:$(OBJS)
    $(CC) $^  $(LDFLAGS) -o $(PROGRAM) $(LINK_SEARCH_PATH)
$(DEPS_DIR)/%.d:%.$(EXTENSION)
    $(CC) -MM $(INCLUDE) $(CFLAGS) $< | sed -e 1's,^,$(OBJS_DIR)/,' > $@

sinclude $(DEPS)

$(OBJS_DIR)/%.o:%.$(EXTENSION) 
    $(CC) -c $<  $(CFLAGS) $(INCLUDE) -o $@ 
clean:
    rm $(OBJS) ${PROGRAM} $(DEPS) 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值