织梦CMS - 轻松建站从此开始!

罗索

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

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

因为经常要用到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 ftp.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)

这是我在用的,欢迎大家改进.....

(yanjinbin)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201112/15515.html]
本文出处:百度博客 作者:yanjinbin 原文
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容