Makefile相关总结

1、主要功能:make是一个解释Makefile文件中指令的命令工具,其最基本的功能就是通过Makefile文件描述源程序之间的相互关系并自动维护编译工作,它会告知系统以何种方式编译和链接程序。剩下的工作就是输入make,就可以自动完成所有的编译任务,并且生成目标程序。

2、工作流程:

1)查找当前目录下的Makefile文件

2)初始化文件中的变量

3)分析Makefie中的所有规则

4)为所有的目标文件创建依赖关系

5)根据依赖关系,决定哪些目标文件要重新生成

6)执行生成命令

3、原理:make工具判断文件有无更新的主要依据是判断依赖文件的建立时间是否比所生成的目标文件要晚。

4Make命令的格式:执行make命令时只需要在Makefile文件所在的目录输入make指令即可,make命令本身带有一些参数:【选项】、【宏定义】、【目标文件】。

标准形式如下:

Make [选项] [宏定义] [目标文件]

下面是一些常用选项:

-f file :指定Makefile的文件名

-n 打印出所有的执行命令,但事实上并不执行这些命令

-s 在执行时不打印命令

-w 如果在make执行时要改变目录,则打印当前的执行目录

-I <dirname> : 指定所有Makefile所在的目录。

-d 打印调试信息

-h help文档,显示Makefile的帮助文档。

Make在没有指定目标文件时,默认生成Makefile文件的第一个目标文件。

5、Makefile文件语法规则:Makefile文件定义了一系列的规则

#注释 //shell脚本一样

目标文件:依赖文件列表 //目标:目标文件列表,一般指的是编译过程中生成的.o文件或可执行文件,也可以是要执行的动作,如“clean”这样的目标。

.......................

<TAB>命令列表 //命令列表:make程序执行的动作,也是创建目标文件的命令,一个规则可以有多条命令,每一行只能有一条命令。

.......................

Makefile文件中变量的使用:

一般都是大写,放在Makefile的顶部来定义,后面跟一个“=”,“=”后面是设定的变量值。如果要引用这个变量,用“$”,变量名需要放在“$”后面的括号中。

Make中一些特殊的内部变量,它们根据每个规则内容定义。

$@ 指代当前规则下的目标文件列表

$< 指代依赖文件列表中的第一个文件

$^ 指代依赖文件列表中的所有依赖文件

$? 指代依赖文件列表中新于对应目标文件的文件列表

使用变量的好处是简化Makefile的书写,方便对程序的维护。变量一般代表 一个文件列表 、编译命令选项。

常用的伪目标:clean(负责清理工作) 、 install(负责安装工作,将可执行程序拷贝到对应目录)。

太基础了,还有很多重要的没有补充。。。。。

你可能感兴趣的:(Makefile相关总结)