Makefile中头文件依赖的自动生成

gcc有参数可以把源文件的依赖关系全部导出来,比如: -bash:~$gcc -MM main.c 输出:main.o: main.c main.h 使用 -MM参数是只导出自定义头文件,-M则会把系统头文件也导出来。以下是一个自动生成头文件依赖的Makefile:

  1 PYINC = /usr/local/include/python2.5/

  2 PYLIB = /usr/local/lib/python2.5/config

  3 CFLAGS = -I$(PYINC) -I$(PYINC)/Include

  4 LDFLAGS = -g -ggdb  

  5 LIBS = -lc -lm -lutil -export-dynamic -L$(PYLIB) -lpython2.5 -lpthread

  6 CC = gcc

  7 OBJS = main.o comm.o gamesys.o pyenter.o pyobject.o active.o protocol.o scene.o objmanage.o hash.o map.o placeobj.o pack.o livingobj.o

  8 SRCS = ${OBJS:%.o=%.c}

  9 

 10 all: depend driver

 11 

 12 depend:

 13         @$(CC) $(CFLAGS) -MM $(SRCS)  > .depend

 14 

 15 -include .depend

 16 

 17 driver: $(OBJS)

 18         $(CC) $(LDFLAGS) $(OBJS) -o driver $(LIBS)

 19 

 20 install:

 21         cp driver ./world/

 22 clean:

 23         rm -f $(OBJS)

 24         rm -f driver 

 25         rm -f .depend

 26 

 27 tags:

 28         ctags *c *h

SRCS = ${OBJS:%.o=%.c}这句是把OBJS中所有的.o替换成.c 组成数组赋给SRCS,相当于:

SRCS = main.c comm.c gamesys.c pyenter.c pyobject.c active.c protocol.c scene.c objmanage.c hash.c map.c placeobj.c pack.c livingobj.c

@$(CC) $(CFLAGS) -MM $(SRCS)  > .depend 这句生成依赖关系,并重定向到.depend中,后面把.depend文件include进来就可以使用了。

上面的Makefile在gmake下测试通过,没有指定.o文件的编译命令是利用的gmake隐含规则编译。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值