枫林在线>>程序设计>>讨论区 [快速回复] [上一主题] [下一主题] Linux/Makefile/(Makefile)
[255617] 主题: 跟我一起写 Makefile(十二)
作者: redhat 标题: 跟我一起写 Makefile(十二) [转载]
昵称: RedHat 来自: 192.168.*.*
经验值: 408 发贴时间: 2004年07月24日 12:40:46 (UTC +08:00)
等级: 白手起家 长度: 1417字
隐含规则
――――

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

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

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

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


一、使用隐含规则

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

    foo : foo.o bar.o
            cc 
========== * * * * * ==========
每页条 |◀ ◀ 第/1页 ▶ ▶|
Top

| 用户注册 | 密码重置 | 在线用户 | 常见问题 |

Copyright © 2001-2025 枫林在线(www.FengLin.info) All Rights Reserved
时间显示基于用户时区设置:Asia/Shanghai (UTC +08:00)
页面运行使用28.72毫秒