Makefile 项目管理工具
1)Linux中使用Makefile, 首先编写Makefile项目管理脚本,而后使用make命令执行脚本,完成管理编译项目的目的
2)编写项目管理脚本时命名为Makefile, makefile(均可)标准后缀为.mk 可缺省
Makefile的优势:
1)自动编译管理代码
2)节省编译时间(空间换时间)
3)复用性强,makefile一次编写终身受益
工程编译过程:
#编译过程时候会产生大量临时文件和中间文件(核心二进制文件 .o文件),编译结束后会清除这些资源文件(例如 VS中的bulid 会在编译结束后清除 .o 文件)
#makefile编译项目时,会选择保留中间.o文件,修改源代码后检测改动,针对源码重新生成二进制,而后重新连接一次即可
makefile基本构成(三要素):
(1) 目标 (2)依赖
TAB制表符 (3)命令
makefile使用过程:
(1)编写项目管理脚本 makefile.mk | makefile | Makefile
(2)通过make命令执行脚本(自动查找当前目录下的makefile文件)
makefile运行原理:
makefile自顶向下分析建立依赖关系, 自底向上执行命令。
makefile 如何节省编译时间:比较文件改动时间
文件访问时间 文件更改时间 文件改动时间
makefile内置函数
使用函数给变量赋值需加括号() 和 💲符号
makefile变量的定义和使用
1)变量统一为大写命名(变量定义时要初始化)
2)默认情况变量无需指定类型,变量中存储字符串数据
3)一些较为常见的识别度较高的变量
4)使用变量内容,需要对变量名进行取值操作,取值符为💲(变量名)
特殊变量
$@(当前目标名)
$<(依赖中的第一个)
$^(所有依赖)
功能目标:没有依赖项,使用功能目标时make目标名 即可执行对应的功能
clean (清除中间文件和程序文件)
install (将编译出的ELF可执行文件拷贝到指定的路径即可) cp app /usr/bin/
disinstall (删除程序文件,清除配置)
伪目标:确保功能目标的正常使用(若当前目录出现与功能目标同名的文件,会导致功能目标无法执行)
.PHONY:clean install disinstall ......