文章参考:makefile详解
个人环境介绍
ubuntu11.04操作系统
GUN Emacs 23.2.1
基本流程
写C++程序基本上是这么几个步骤:
- 编辑代码
- 编写Makefile
- 编译代码,修改编译错误
- 调试代码,修改逻辑错误
编写Makefile
makefile实现了工程的自动编译,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
其中,make是一个命令工具,是一个解释makefile中指令的命令工具。
每个项目都有自己的makefile文件。
举例:有文件fileA.cpp对应头文件fileA.h,fileB.cpp对应头文件fileB.h,main.cpp包含头文件fileA.h,fileB.h; 要求输出main可执行文件
makefile编写如下:(没有实际验证,凭经验写的,如果有错误,还请不吝赐教)
main: main.o fileA.o fileB.o
gcc main.o fileA.o fileB.o -o main
main.o: main.cpp fileA.h fileB.h
gcc -c -o main.o main.cpp
fileA.o: fileA.cpp fileA.h
gcc -c -o fileA.o fileA.cpp
fileB.o: fileB.cpp fileB.h
gcc -c -o fileB.o fileB.cpp
注意事项:
gcc前一定要有一个tab分隔符,不能有空格;
当需要换行时,可用“\”隔开;
否则会出现“makefile:2: *** 遗漏分隔符 "的错误。
详细内容:
一、Makefile的内容
Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。
1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明确指出,要生成的文件,文件的依赖文件,生成的命令。
2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。
3、变量的定义。在Makefile中我们要定义一系列的变量,变量一般都是字符串,这个有点你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。
4、文件指示。其包括了三个部分:一个是在一个Makefile中引用另一个Makefile,就像C语言中的include一样;另一个是指根据某些情况指定Makefile中的有效部分,就像C语言