枫林在线论坛精华区>>程序设计 |
[255617] 主题: 跟我一起写 Makefile(十二) |
作者: redhat (RedHat) | ||
标题: 跟我一起写 Makefile(十二)[转载] | ||
来自: 192.168.*.* | ||
发贴时间: 2004年07月24日 12:40:46 | ||
长度: 10890字 | ||
隐含规则 ———— 在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的 东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件 ,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含 的”,早先约定了的,不需要我们再写出来的规则。 “隐含规则”也就是一种惯例,make会按照这种“惯例”心照不喧地来运 行,那怕我们的Makefile中没有书写这样的规则。例如,把[.c]文件编译 成[.o]文件这一规则,你根本就不用写出来,make会自动推导出这种规则 ,并生成我们需要的[.o]文件。 “隐含规则”会使用一些我们系统变量,我们可以改变这些系统变量的值 来定制隐含规则的运行时的参数。如系统变量“CFLAGS”可以控制编译时 的编译器参数。 我们还可以通过“模式规则”的方式写下自己的隐含规则。用“后缀规则 ”来定义隐含规则会有许多的限制。使用“模式规则”会更回得智能和清 楚,但“后缀规则”可以用来保证我们Makefile的兼容性。 我们了解了“隐含规则”,可以让其为我们更好的服务,也会让我们知道 一些“约定俗成”了的东西,而不至于使得我们在运行Makefile时出现一 些我们觉得莫名其妙的东西。当然,任何事物都是矛盾的,水能载舟,亦 可覆舟,所以,有时候“隐含规则”也会给我们造成不小的麻烦。只有了 解了它,我们才能更好地使用它。 一、使用隐含规则 如果要使用隐含规则生成你需要的目标,你所需要做的就是不要写出这个 目标的规则。那么,make会试图去自动推导产生这个目标的规则和命令, 如果make可以自动推导生成这个目标的规则和命令,那么这个行为就是隐 含规则的自动推导。当然,隐含规则是make事先约定好的一些东西。例如 ,我们有下面的一个Makefile: foo : foo.o bar.o cc |
||
========== * * * * * ==========
|
返回 |