开始不太专业,写了一个很简单的Makefile,就一句

gcc -Wall *.c  

不用这样用异样的眼光看着我。。。咳咳。

接着测试代码越来越多,有时一个user.h,user.c就要一个usertest.c,main入口太多,*.c不行了,于是就改了一下Makefile
加入

SRCS = a.c b.c c.c d.c  
OBJS = a.o b.o c.o d.o  

一个make all,一个make clean。

差不多了,接着又发现,如果修改了.h,.c不会自动重编译,这样可不行,于是上网查找资料,发现有一个makedepend程序,可以自动生成.c所依赖的.h用来给Makefile调用,接着又发现gcc就有这个功能,于是加入
depend:

$(CC) -MM $(SRCS) > .depend  

ifeq (.depend, $(wildcard .depend))  
include .depend  
endif  

其实这样的解决方案还不是最好,每次都得手动make depend。

期间又发现一个更简单的Makefile脚本,只需定义程序源代码和生成文件名,然后

.include

就可以了,所有的事系统都给你做了,不过好像测试不太通得过,就放弃了。

提醒:写Makefile要小心,我在写Makefile时,贪图方便,写完了SRCS,把SRCS拷贝一份成OBJS,忘记把.c修改成.o了,然后一个make clean,把所有的.c文件都给删除了。。。汗。。。非常汗。。。幸好我们是用CVS在那边开发,文件删除了,update一下就全部回来了,否则真的要崩溃了。相同的事情在hwTony身上也演了一遍,他加了一个模块,也把.o写成.c,然后make clean,刚写的文件就被删除了,而且更可怕的是他的代码只是测试,还没有commit到CVS内,不过万幸的是他那个文件的EditPlus没有关闭,save一下也回来了。

所以这个教训大家要记得,代码要常备份。写Makefile要小心。。。

评论


匿名2003-10-05 13:14:09 说: 呵呵。。好像好莱坞惊险悬念动作片阿