点击加载图片 第一:Makefile基本简介 当文件有几十、上百甚至上万个的时候用终端输入GCC命令的方法显然是不现实的。如果我们能够编写一个文件,这个文件描述了编译哪些源码文件、如何编译那就好了,每次需要编译工程的时只需要使用这个文件就行了。 为此提出了一个解决大工程编译的工具:make,描述哪些文件需要编译、哪些需要重新编译的文件就叫做Makefile,Makefile就跟脚本文件一样,Makefile里面还可以执行系统命令。使用的时候只需要一个make命令即可完成整个工程的自动编译。 第二:Makefile基本方法 如果是一个小工程的话,例如:main.c、input.c和calcu.c这三个C文件和input.h、calcu.h这两个头文件。其中main.c是主体,input.c负责接收从键盘输入的数值,calcu.c进行任意两个数相加,其中main.c文件内容如下: #include input.c文件内容如下: #include calcu.c文件内容如下: #include'calcu.h'intcalcu(inta,intb){return(a+b);} 文件input.h内容如下: #ifndef_INPUT_H#define_INPUT_Hvoidinput_int(int*a,int*b);#endif 文件calcu.h内容如下 #ifndef_CALCU_H#define_CALCU_Hintcalcu(inta,intb);#endif 在终端输入如下命令: gccmain.ccalcu.cinput.c-omain 编译完成以后执行main这个程序,测试一下软件是否工作正常 点击加载图片 分析:可以看出我们的代码按照我们所设想的工作了,使用命令“gccmain.ccalcu.cinput.c-omain”看起来很简单是吧,只需要一行就可以完成编译,但是我们这个工程只有三个文件啊!如果几千个文件呢?再就是如果有一个文件被修改了以,使用上面的命令编译的时候所有的文件都会重新编译。 第三:添加Makefile的实现方法 在源文件的同级目录中,添加Makefile文件输入代码如下: main:main.oinput.ocalcu.ogcc-omainmain.oinput.ocalcu.omain.o:main.cgcc-cmain.cinput.o:input.cgcc-cinput.ccalcu.o:calcu.cgcc-ccalcu.cclean:rm*.ormmain 上述代码中所有行首需要空出来的地方一定要使用“TAB”键!不要使用空格键!这是Makefile的语法要求,编写好得Makefile如: 点击加载图片 Makefile编写好以后我们就可以使用make命令来编译我们的工程了,直接在命令行中输入“make”即可,make命令会在当前目录下查找是否存在“Makefile”这个文件,如果存在的话就会按照Makefile里面定义的编译方式进行编译。 点击加载图片 问题:如果在使用make命令编译工程的时候提示错误: 点击加载图片 解决办法:1、Makefile中命令缩进没有使用TAB键。 2、VI/VIM编辑器使用空格代替了TAB键,修改文件/etc/vim/vimrc,在文件最后面加上如下代码: setnoexpandtab 第四:Makefile里面的基本规则 点击加载图片 总结:Makefile里面涉及到的知识还有很多,想要深入学习还需要熟悉语法结构。 |
|