Chinaunix首页 | 论坛 | 博客
  • 博客访问: 848028
  • 博文数量: 756
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:40
文章分类

全部博文(756)

文章存档

2011年(1)

2008年(755)

我的朋友

分类:

2008-10-13 16:14:14

make和Makefile一向被用来编译、连接代码,这已经成为了思维的定势。如果能够突破这个定势,就会发现make原来还有很多妙用。

Makefile其根本原理就是利用文件时间比较来触发一个动作。比如:

file_a.obj : file_a.c
    gcc file_a.c - o file_a.obj

这就是一个最简单的应用。make读到这段代码时,会去比较file_a.obj和file_a.c的日期,如果file_a.c比file_a.obj还要新(就是时间晚,如2005-05-09 20:03:43 就比2003-12-07 04:03:12要新),这时候就会触发下面一行的动作。用gcc去编译file_a.c,从而重新生成file_a.obj,这就是项目编译中所做的事,通过比较时间,只编译需要编译的部分,这样比较高效、节约时间。

我们也可以利用make的原理来打patch,效果很好。比如我的项目中平台会自动生成一个ori_font.c的文件,上面是平台提供的字库。而我不需要这个字库,我要替换掉其中这个文件中字库相关的一部分内容。于是我写了一个小程序 replace_fonts.exe,通过执行replace_fonts ori_font.c pt_font.c就可以把ori_font.c给替换掉。但是汉字是很多的,这个文件也非常大。所以我不想每次编译之前都替换这个文件,我只需要在平台重新生成代码后(平台更新了ori_font.c),我才使用replace_fonts,然后再编译工程即可。于是make可以帮我这个忙。

首先我写一个Makefile:

#rpfonts.mak
#for replacing fonts res

fonts.obj : fonts.c
   replace_fonts ori_font.c pt_font.c

然后把它加入我build工程的批处理文件中:

rem build_prj.bat

gnumake -f rpfonts.mak
gnumake -f prj.mak

Okey,我只需像平常一样执行build_prj.bat就好了,它会在需要替换字体的时候自动给偶替换的。嘻嘻,是不是很方便呢?:p

-------------
乾坤一笑 写于2005年6月18 日  转载请标明出处和原文链接


--------------------next---------------------

阅读(930) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~