一个工程中的源文件不计其数,按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为马克覅了就像一个Shell脚本一样其中也可以执行操作系统的的命令。makefile带来的好处就是:“自动化编译”。一旦写好,只需要一个make命令,就可以使整个工程自动编译,极大提高了软件开发的效率。makefile是一个文件,make是一个工具,用来解释makefile中的指令。


编写一个makefile的中心思想就是要抓住“依赖关系”和“依赖方法”这两点。

比如编译一个test.c文件到可执行程序test需要经过预处理、编译、汇编、文本链接四个步骤,每次得到的文件是:test.i,test.s,test.o,test。理解依赖关系我们可以反着来看程序的编译过程,也就是说,要得到test文件要依赖于test.o文件,而得到test.o依赖于test.s,得到test.s要依赖于test.i,同样要得到test.i要依赖于test.c文件,如此一来,这样的关系就是一种依赖关系。从一个文件到一个目标文件所要做的处理就是一种依赖方法。



Makefile的编写规则:

目标文件:执行文件

命令(注意:命令前必须以tab键开头)


我们以test.c程序的编译链接过程来举例写一个makefile。

首先,需要在当前目录下touch一个Makefile(注意:makefile或者Makefile,只能是M字母可大写可小写),然后vim进入Makefile文件进行编辑


当工程比较大的时候,这样编写会很麻烦,我们可以只执行一步:




这样,我们的Makefile就编写好了。下面这幅图就是使用make工具的所有步骤:



附上一篇文章:http://blog.csdn.net/ruglcc/article/details/7814546/


本文转载:CSDN博客