Makefile常用知识点
格式
- 目标:最终要去生成的文件, 定格写,后面是冒号(冒号后面是依赖)
- 依赖:用来生成目标的源材料
- 命令:加工的方法,命令前面一定是Tab, make的过程就是使用命令将依赖加工成目标的过程
工作原理
- 当我们执行make xx时,Makefile会自动执行xx这个目标下面的命令语句
- 当我们make xx时,是否执行是取决于依赖的,依赖如果成立就会执行命令,否则不执行
- 直接执行make与执行make 第一个目标的效果是一样的(第一个目标其实就是默认目标)
命令前缀
符号 | 含义 |
---|---|
无 | 回显命令和结果, 出错时中断 |
- | 回显命令和结果, 出错时继续执行 |
@ | 不回显命令, 仅显示结果, 出错时中断 |
通配符%和自动推导
- %代表一个或几个字符,例如%.o就代表所有以.o为结尾的文件。
- 当Makefile需要一个文件时,他会将这个目标去按规则套用,一旦套用上某个规则说明,则Makefile会试图寻找这个规则中的依赖,如果能找到则会执行这个规则用依赖生成目标。
自动变量
- $@ 规则的目标文件名
- $< 规则的依赖文件名
- $^ 依赖的文件集合
定义和使用变量
无变量类型,直接定义使用。$变量名使用
- = 赋值语句中变量在被解析时,取决于变量最后一次赋值的值
- := 赋值语句中变量在被解析时,取决于变量最近一次赋值的值
- ?= 前面没有赋值(定义)过时才赋值
- += 给一个已经赋值的变量继续赋值,续接的内容和原来的内容会以空格隔开
环境变量
- 使用export导出的就是环境变量,一般使用大写,普通量使用小写. 环境变量回影响到其它Makefile文件,需谨慎使用. 环境变量在整个工程的Makefile中可以共享,普通变量只是当前本Makefile可用.
特殊符号
- @静默执行 不输出命令本身,仅输出命令本身
更多内容,欢迎访问我的主页 https://darkreunion.tech/