Makefile自动生成依赖文件,并自动编译

因为经常要用到makefile编译,每次都为头文件的依赖关系头痛,所以这次费了两天时间开发了一个通用的makefile,它可以自动生成依赖文件,并编译,当然你要按文件里面的说明来填充一些中间文件名.

代码如下:

#自动依赖项(*.d),并编译生成文件
#
编译选项
LDFLAGS = -Wall #-ggdb
#
库目录
DIR = /usr/local/arm/3.3/lib
#
加载库
LIBS = -lm #-L$(DIR) -llibjtts_uni.a
#
编译器选择
CC = arm-linux-gcc#
注意这里不能有空格,否则生成*.d时的sed替换命令出错
#
目标文件名
TRG = gprs
#
生成中间文件名,也是依赖文件,所以必须跟文件同名
OBJS = gprs.o atcmd.o msg.o parscmd.o CRC32.o logfile.o tfrr_pro.o telefun.o\
          ../include/general.o ../include/config.o ../include/io.o
           
SRCS = ${OBJS:%.o=%.c} #
OBJS中所有.o文件转换成.c文件 
DEPE = ${OBJS:%.o=%.d} #.o ->.d

all: $(TRG)

$(TRG):$(OBJS)$(DEPE)    #这里把*.d也设置依赖,这样*.d文件修改也会重编译文件
$(CC) $(OBJS) -o $(TRG) $(LIBS) $(LDFLAGS)

-include$(DEPE)     #这里有2个隐晦规则:1,如果找到*.d文件执行下面的生成指令,2.找到*.d文件,则编译命令也是自动推导的

depend:$(DEPE)       #
自动生成依赖*.d文件
$(DEPE):%.d:%.c
-rm -f $*.d;\
gcc -MM $<|sed 's,^.*:,$*.o:,' >log.$$$$1;\
echo $(CC) $(LDFLAGS) -c -o $*.o $< >log.$$$$2;\
cat log.$$$$1 log.$$$$2|sed 's/^$(CC)/\t$(CC)/g' >$@;\
rm -f log.$$$$*;\
  
install:                    #
安装到目录中
cp $(TRG) ./debug/   

clean:                      #
清除目标文件
rm -f $(OBJS) $(TRG) 

clear:                      #
清除依赖文件和目标文件
rm -f $(OBJS) $(DEPE) $(TRG)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值