枫林在线精华区>>程序设计>>Makefile
[255617] 主题: 跟我一起写 Makefile(十二)
作者: redhat (RedHat)
标题: 跟我一起写 Makefile(十二)[转载]
来自: 192.168.*.*
发贴时间: 2004年07月24日 12:40:46 (UTC +08:00)
长度: 1436字

隐含规则
――――

在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们
编译C/C++的源程序为中间目标文件(Unix下是文件,Windows下是文件)。本章讲述的就是
一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。

“隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运行,那怕我们的Ma
kefile中没有书写这样的规则。例如,把文件编译成文件这一规则,你根本就不用写出来,
make会自动推导出这种规则,并生成我们需要的文件。

“隐含规则”会使用一些我们系统变量,我们可以改变这些系统变量的值来定制隐含规则的
运行时的参数。如系统变量“CFLAGS”可以控制编译时的编译器参数。

我们还可以通过“模式规则”的方式写下自己的隐含规则。用“后缀规则”来定义隐含规则
会有许多的限制。使用“模式规则”会更回得智能和清楚,但“后缀规则”可以用来保证我
们Makefile的兼容性。
我们了解了“隐含规则”,可以让其为我们更好的服务,也会让我们知道一些“约定俗成”
了的东西,而不至于使得我们在运行Makefile时出现一些我们觉得莫名其妙的东西。当然,
任何事物都是矛盾的,水能载舟,亦可覆舟,所以,有时候“隐含规则”也会给我们造成不
小的麻烦。只有了解了它,我们才能更好地使用它。


一、使用隐含规则

如果要使用隐含规则生成你需要的目标,你所需要做的就是不要写出这个目标的规则。那么
,make会试图去自动推导产生这个目标的规则和命令,如果make可以自动推导生成这个目标
的规则和命令,那么这个行为就是隐含规则的自动推导。当然,隐含规则是make事先约定好
的一些东西。例如,我们有下面的一个Makefile:

    foo : foo.o bar.o
            cc
========== * * * * * ==========
上级目录
Copyright © 2001-2025 枫林在线(www.FengLin.info)
All Rights Reserved