最近,在了解并学习makefile。
刚接触makefile这个词是在这篇博客中看到的。
先不说我看完篇随笔有什么收获,但它让我觉得,我学习的内容是如此的少之又少。
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是怎么一回事了, makefile其实是一个文本文件,而make其实是执行该文本文件。导演====make
剧本====makefile演员====MAKE调用的外部命令,如编译器、链接器等电影====生成的程序
了解了它是什么,就要知道它在怎么干!~