您的位置:首页 > 其它

学习makefile(1)

2012-07-31 15:52 162 查看
最近,在了解并学习makefile。

刚接触makefile这个词是在这篇博客中看到的。

/article/5211523.html

先不说我看完篇随笔有什么收获,但它让我觉得,我学习的内容是如此的少之又少。

makefile?

上面提及的随笔中,第一次让我接触makefile,而之前我只接触过make这个命令。

后来,有人向我介绍了一本书,书名叫《unix编程艺术》。

这本书有一个小节是介绍makefile与make的,


很多常用的典型makefile中根本没有文件依赖关系。

它们是将某些开发者想要自动化的小过程捆绑在一起的方法。


接下来,书上引用了Stuatr Feldman的话:


生成目标非文件,这早已有之。

“make all” 和“clean”是早些日子我自己的习惯。

有一个老Unix笑话,输入“make love”,

输出是“Don't know how to make love”。


提及的随笔中提及到一篇叫《和我一起学makefile》的文章,

这篇文章能更好的帮助我入门makefile,

可是,大体地看完这些,都不明白,makefile究竟是在项目中起着什么作用,又是怎么使用的。

makefile与make都有“make”,但是,make与makefile有什么区别呢。??

唉,看到这个问题你们别笑我。真心不懂。

努力寻找答案。最直接的就是问别人。


Make之于Makefile。
相当于一个程序的配置文件和程序本身的关系。
也相当于脚本与脚本解释器的关系。


这个答案让我对makefile与make有了一些基本的认识。

而上面的加解更让我明白了,虽然还不是很系统。


make是makefile的解释执行程序。
makefile的作用就是“自动组建”的脚步,make这个程序通过你写的makefile来知道执行什么编译器编译什么文件用什么选项来编译出什么目标。
以至于一个非常庞大的项目,你只需要一个make命令就能组建完成。


以上是较为详细的说法。下面一句又把上面的内容简化一下:


make是系统提供的一个可执行程序
而makefile是程序员针对自己的开发项目书写的一个文本文件
make解释makefile的内容,按程序员的期望完成编译、链接任务


如此抽象的说法,有人就提供了一些形象的比喻:


make是程序,makefile是程序的配置文件……
这就像你玩游戏的时候,双击图标,这个东西就相当与make,是真正可以执行的程序,进入游戏以后,你要读自己的存档,要根据这个存档来继续游戏,这个存档就相当与makefile……
在执行meke的时候,make程序会自动的查找makefile这个文件,如果没有这个文件,make无法执行……


上面的例子是以游戏说明关系,而下面则是以演奏乐曲的流程为例。


make是乐团指挥,
makefile是它看的总谱
总谱中描述了各个乐手(象编译器、链接器等)的演奏分谱

乐园指挥按总谱挥动指挥棒,调度各位乐手演奏(编译器、链接器按序工作),。。。。直到一部乐曲(一个多件源文件、目标文件、库文件生成的程序)诞生


下面双以一部电影的始与终来说明,其实这三个例子都很形象的:


导演====make
剧本====makefile
演员====MAKE调用的外部命令,如编译器、链接器等

电影====生成的程序



其实看完上面的解说后,我可以明白make和makefile是怎么一回事了,

makefile其实是一个文本文件,
而make其实是执行该文本文件。

了解了它是什么,就要知道它在怎么干!~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: