makefile的备忘 (2007-11-27 23:27)
分类: C程序设计
今天因为一个比较傻的问题穷忙活了半天,所以把一些提醒自己的东西贴上来备忘吧。
错误的makefile写法:
$(MIDOBJ):$(MIDOBJ%.o=%.c) $(CC) $(CFLAGS) -c $< -o $@ |
然后出现的问题就是报一大堆诡异的东西,本来没问题的代码都编译通不过了,说什么没有定义的引用等等,实在是恼火。
正确的写法:
$(MIDOBJ):%.o:%.c $(CC) $(CFLAGS) -c $< |
问题产生是因为一时头晕,写的太happy了,还给加上了个-o参数,结果输出的中间文件里面都是空的。mmd,郁闷。
上面标的写法是没问题了,但是一直以来我用的这个规则的问题就是:头文件的依赖没解决,如果修改了头文件,则要clean之后从头来过,手工维护头文件的依赖又比较麻烦,所幸这个问题本不是问题,如下写法即可:
.depend:Makefile $(MIDOBJ) $(CC) -M $(MIDOBJ:%.o=%.c) > $@ sinclude .depend |
这样的话会自动生成依赖文件。关键就是这个-M参数了。蓝色标注的写法要优于绿色标注的写法,偶个人觉得,嘿嘿。
顺便说说,-MD这个参数可以开发一下。