如何写Makefile
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 13:58:17
如何写Makefile
如何写Makefile
如何写Makefile
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规则规定了编译的依赖关系,也就是目标文件依赖于条件,生成规则用命令来描述.在编译时,如果需要的条件的文件比目标更新的话,就会执行生成命令来更新目标.