首页 电脑 电脑学堂 查看内容

makefile(4)

2004-9-29 20:05 593 0

摘要: 2) GNU Make 工具 2.1 基本 makefile 结构 GNU Make 的主要工作是读进一个文本文件, makefile 。这个文 件里主要是有关哪些 文件(‘target’目的文件)是...
关键词: 文件 makefile 一个 foo bar 规则 Make myprog 命令 时间

2) GNU Make 工具 2.1 基本 makefile 结构 GNU Make 的主要工作是读进一个文本文件, makefile 。这个文 件里主要是有关哪些 文件(‘target’目的文件)是从哪些别的 文件(‘dependencies’依靠文件)中产 生的,用什么命令来进行 这个产生过程。有了这些信息, make 会检查磁碟上的文件,如果 目的文件的时间戳(该文件生成或被改动时的时间)比至少它的一 个依靠文件旧的话, make 就执行相应的命令,以便更新目的文件。 (目的文件不一定是最后的可执行档,它可以是任何一个文件。) makefile 一般被叫做“makefile”或“Makefile”。当然你可以 在 make 的命令行指 定别的文件名。如果你不特别指定,它会寻 找“makefile”或“Makefile”,因此使用这两个名字是最简单 的。 一个 makefile 主要含有一系列的规则,如下: 例如,考虑以下的 makefile : === makefile 开始 === myprog : foo.o bar.o gcc foo.o bar.o -o myprog foo.o : foo.c foo.h bar.h gcc -c foo.c -o foo.o bar.o : bar.c bar.h gcc -c bar.c -o bar.o === makefile 结束 === 这是一个非常基本的 makefile —— make 从最上面开始,把上 面第一个目的, ‘myprog’,做为它的主要目标(一个它需要保 证其总是最新的最终目标)。给出的 规则说明只要文件‘myprog’ 比文件‘foo.o’或‘bar.o’中的任何一个旧,下一行的命令将 会被执行。但是,在检查文件 foo.o 和 bar.o 的时间戳之前,它会往下查 找那些把 foo.o 或 bar.o 做为目标文件的规则。它找到的关于 foo.o 的规则,该文件的依靠文件是 foo.c, foo.h 和 bar.h 。 它从下面再找不到生成这些依靠文件的规则,它就开始检 查磁碟 上这些依靠文件的时间戳。如果这些文件中任何一个的时间戳比 foo.o 的新, 命令 'gcc -o foo.o foo.c' 将会执行,从而更新 文件 foo.o 。 接下来对文件 bar.o 做类似的检查,依靠文件在这里是文件 bar.c 和 bar.h 。 现在, make 回到‘myprog’的规则。如果刚才两个规则中的任 何一个被执行, myprog 就需要重建(因为其中一个 .o 档就会比 ‘myprog’新),因此连接命令将被 执行。 希望到此,你可以看出使用 make 工具来建立程序的好处——前 一章中所有繁琐的检 查步骤都由 make 替你做了:检查时间戳。 你的源码文件里一个简单改变都会造成那 个文件被重新编译(因 为 .o 文件依靠 .c 文件),进而可执行文件被重新连接(因 为 .o 文件被改变了)。其实真正的得益是在当你改变一个 header 档的时候——你不 再需要记住那个源码文件依靠它,因为所有的 资料都在 makefile 里。 make 会很轻 松的替你重新编译所有那 些因依靠这个 header 文件而改变了的源码文件,如有需 要,再 进行重新连接。 当然,你要确定你在 makefile 中所写的规则是正确无误的,只 列出那些在源码文件 中被 #include 的 header 档……
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部