一、概念
1.makefile
makefile定义了一些规则,来表明文件的相互依赖性,并运行命令,达到--自动化编译
比如指定哪些文件先编译,哪些文件后编译,及哪些文件需要重新编译
2.make
命令工具,用来解释makefile中的规则和指令
make命令执行,需要一个makefile文件,来告诉make命令需要如何编译和链接程序
规则:
1)如果工程没有编译过,则编译所有.m文件并链接
2)如果工程中某几个.m文件被修改,只编译修改的.m文件,并链接
3)如果头文件被修改,则引入这几个头文件的.m文件都需要重新编译,并链接
3.编译(compile)
把源文件.m文件,转变成(Object File)中间代码文件.o,这个动作叫编译
编译时,编译器需要检查语法,函数和变量是否被声明
4.链接(link)
把大量的Object File文件合成可执行文件,这个动作叫链接
链接时,链接器去.o文件中链接函数是否实现,和全局变量。如果找不到,报链接错误码
中间文件打包变成库文件(Archive File文件).a,window下为.lib文件
二、Makefile规则
目标文件:依赖文件(tab键)命令
目标文件:依赖文件(tab键)命令
上面的规则,表明文件的依赖关系
1.目标文件:
可以是:.o文件;可执行文件;标签,即“伪目标”
第一个目标文件就是工程的“终极目标”
2. 依赖文件:
生成目标文件所需要的文件或目标
3.命令:
make需要执行的命令(任何shell命令),目标文件的生成规则定已在命令里
注意:命令必须用(tab键)开头,如果和“目标文件:依赖文件”同行,则用分号隔开
三、make工作过程
1.默认的,输入make命令
2.先查找当前目录下“Makefile”或“makefile”文件
3.如果有,查找文件中规则定义的第一个目标文件,并把它做为工程的最终目标
4.如果最终目标不存在,或它的依赖文件修改时间比最终目标文件新,那么执行后面定义的命令,生成最终可执行文件
5.如果最终目标的依赖文件不存在,make会试图在下面的规则里查找这些依赖文件,并把它最为目标生成它,如果没法生成,则退出
6.依上类推
来源:https://www.cnblogs.com/xiaodao/archive/2012/03/08/2385113.html