一:什么是工程管理器Make?
Make是GCC提供的一种半自动化的工程管理器。所谓的半自动化是指在使用工程管理器之前需要人工编写程序的编译规则,所有的编译规则都保存在Makefile文件中,全自动化得工程管理器会在编译程序前自动生成Makefile文件。
二:为什么要有工程管理器Make?
因为在实际的开发过程中,仅仅通过gcc命令对程序进行编译时非常低效的,原因主要有两点:
1,程序往往是由多个源文件组成的,源文件的个数越多,那么gcc的命令行就会越长。此外,各种编译规则也会加大gcc命令行的复杂度,所以在开发调试的过程中,通过输入gcc命令行来编译程序是很麻烦的。
2,在程序的整个开发过程中,调试的工作量占到了整体工作量的70%以上。在调试程序的过程中,每次调试一般只会修改部分源文件。而在使用gcc命令行编译程序时,gcc会把那些没有被修改的源文件一起编译,这样就会影响变异的总体效率。
因此为了提高编译程序的效率,工程管理器Make就应运而生!
三:工程管理器Make有哪些优越性?
1,使用方便。通过命令“MAKE”就可以启动MAKE工程管理器对程序进行编译,所以不再需要每次都输入GCC命令行。MAKE启动后会根据Makefile文件中的编译规则命令自动对源文件进行编译和链接,最终生成可执行文件。
2, 调试效率高。为了提高编译程序的效率,Make会检查每个源文件的修改时间(时间戳)。只有在上次编译之后被修改的源文件才会在接下来的编译过程中被编译和链接,这样就能避免多余的编译工作量。为了保证源文件具有正确的时间戳,必须保证操作系统时间的准确性。
四:什么是Makefile?
Makefile存储着工程管理器Make进行工作所需的编译规则命令。
Makefile文件由以下三种基本内容组成:
(1)需要生成的目标文件(target file)
(2)生成目标文件所需要的依赖文件(dependency file)
(3)生成目标文件的编译规则命令行(command)
五:一个简单的makefile文件
注意事项;(1) .PHONY:clean伪目标 test目标 main.o 依赖 gcc main.o add.o sub.o mul.o div.o -o test 命令
(2)执行顺序:当依赖是目标体的时候,跳转过去,执行完,再跳转过来
(3)Makefile 与 makefile 在同一目录下,优先识别 makefile
六:另一种makefile 写法
1,目录分类:(1)功能目录,有几个创建几个,之下建立src,src之中放.c文件, 在每个功能目录下都建一个makefile
(2)include目录放声明文件
(3)scripts 放脚本文件 在它之下也要放makefile
(4)bin 放可执行文件
(5)lib 放库文件
(6)doc 放文档信息 readme 使用说明
(7)顶层目录下放一个总控makefile文件
2,例子;
总控makefile文件