Gnu make 笔记之一【简介】
1. Make的用处
Make在nix系统下常用来管理大型的软件项目。它可以自动决定哪些文件需要重新编译,避免重复编译,并且可以自己动安装软件与清理编译现场。还可以自动卸载编译安装的软件。
2. Make与Makefile的关系
就像Shell与脚本,计算机与程序之间的关系。Makefile告诉Make要去做什么,需要什么,以及怎么样做。而Make负责执行这些指令。
3. Makefile简价
规则是Makefile的重要组成部分,它规定了做什么,需要什么,以及怎么样去做这三部分的内容。规则包含了文件之间的依赖关系和更新此规则目标所需要的命令。
一个规则结构如下:
target ... : prerequisites ...
recipe
...
...
target:规则的目标。也就是这个规则做什么。目标可以是.o文件、也可以是最后的可执行程序的文件名等。另外,目标也可以是一个make执行的动作的名称,如目标“clean”,我们称这样的目标是“伪目标”。
prerequisites:完成目标所依赖的条件,即需要什么。往往是生成规则目标所需要的文件名列表。依赖的条件发生了变化,往往就要重新完成目标。
recipe:完成目标的方法,即怎样做。是规则所要执行的动作(任意的shell命令或者是可在shell下执行的程序)。一个规则可以有多个命令行,每一条命令占一行。每一个命令行必须以[Tab]字符开始。并不是所有的以[Tab]键出现行都是命令行。但make程序会把出现在第一条规则之后的所有以[Tab]字符开始的行都作为命令行来处理。
4. Make执行的路线
当在shell提示符下输入“make”命令以后。make读取当前目录下的Makefile文件,并将Makefile文件中的第一个目标作为其执行的“终极目标”,开始处理第一个规则。根据其依赖文件依次寻找创建这些依赖文件的规则。首先为第一个依赖文件寻找创建规则,如果第一个依赖文件依赖于其它文件,则同样为这个依赖文件寻找创建规则,直到为所有的依赖文件找到合适的创建规则。之后make从最后一个规则回退开始执行,最终完成终极目标的第一个依赖文件的创建和更新.对于规则中的每一个依赖文件,使用同样方式去重建它,在完成对所有依赖文件的重建之后,最后一步才是重建此规则的目标。(整个是一个递归的过程,类似于编译原理中表达式的解析)。
posted on 2011-11-28 22:28 findmehere 阅读(942) 评论(0) 编辑 收藏 举报