同时拼多个网段bat:makefile的备忘

来源:百度文库 编辑:中财网 时间:2024/05/07 05:28:31
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这个参数可以开发一下。