如何写Makefile

问题描述:

如何写Makefile
1个回答 分类:综合 2014-11-05

问题解答:

我来补答
makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至可以在makefile中执行shell脚本.makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率.
  关于程序的编译和链接
  一般来说,无论是C还是C++,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile),一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件).然后再把大量的Object File合成执行文件,这个动作叫作链接(link).
  编译时,编译器需要的是语法的正确,函数与变量的声明的正确.对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件.
  链接时,主要是链接函数和全局变量,所以,我们可以使用这些中间目标文件(O文件或是OBJ文件)来 链接我们的应用程序.链接器并不管函数所在的源文件,只管函数的中间目标文件(Object File),在大多数时候,由于源文件太多,编译生成的中间目标文件太多,而在链接时需要明显地指出中间目标文件名,这对于编译很不方便,所以,我们要给 中间目标文件打个包,在Windows下这种包叫“库文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件.
  下面我们开始看看如何自己写出makefile.
  Makefile的规则
  目标 : 需要的条件 (注意冒号两边有空格)
    命令  (注意前面用tab键开头)
  解释一下:
  1 目标可以是一个或多个,可以是Object File,也可以是执行文件,甚至可以是一个标签.
  2 需要的条件就是生成目标所需要的文件或目标
  3 命令就是生成目标所需要执行的脚本
  总结一下,就是说一条makefile规则规定了编译的依赖关系,也就是目标文件依赖于条件,生成规则用命令来描述.在编译时,如果需要的条件的文件比目标更新的话,就会执行生成命令来更新目标.
 
 
展开全文阅读
剩余:2000
下一页:练习2.3