|

楼主 |
发表于 2016-1-22 21:01:31
|
显示全部楼层
今天上班偷偷看了下GNU make.
现在自己回忆下所学.
GNU的make工具,用来处理Makefile.
Makefile一般有五种组织.
1. explicit rule. 明确的规则:把要执行的命令所需要的 文件, 执行生成的目标, 执行方式都写清楚.
2. implicit rule. 让make自动把寻找 生成目标对应的 源文件.
3. variable definition. 相当于C里面的宏定义.可替换长串的文件.
4. directive. 这个可能比较高级了还不懂.
5. # comment.注释.
make也相当于也是在解释makefile.然后按照makefile里面写的一步一步调用具体的命令.
make会按照顺序执行makefile里面的命令.
如果要生成一个 目标A, A由目标B,C,D链接而成.
那么,在由B,C,D生成目标A的时候,就会分别检查一下目标B,C,D文件的生成时间是不是在B,C,D的源文件最后修改时间之后.
如果是,说明该目标文件仍然是最新的.
如果不是,说明该目标文件的源文件已经被修改过了但还没重新生成目标文件,于是就会用这个目标文件的源文件用这个目标文件的makefile再make一次.
....
有点绕.
最后,这个生成目标A的make会确保它需要的B,C,D都是最新的.这是个自动的过程,但是每一步其实都是你自己写的.makefile的嵌套.
然后就通过recipe生成目标A.
同时,你还可以在makefile里面加一点其他的命令,用以完善你的make.比如,把中间生成的文件删除等等.
有点像脚本,虽然我也不知道脚本是甚么.
今天就学到这里了.
下雪了. |
|