makefile文件
可以指定编译顺序,这样方便一个项目的多个文件要编译的挨个操作的麻烦。
makefile文件的命名:makefile 或者 Makefile 必须是这俩,系统才能识别
规则的书写语法如下:
一个makefile内可以有多个规则
目标:依赖a 依赖b ...命令(shell命令)
命令前面一定要插入制表符Tab
makefile文件的工作原理
- 一般来讲下面的规则都是为第一条规则服务的
- 先检查所需的依赖是否存在,不存在就查找下面是否有生成依赖的规则
- 可以根据文件的时间更新目标,例如依赖的时间比生成过的目标晚,那么证明依赖更新过,会重新运行对应依赖的生成文件以及重新生成规则一的目标
关于makefile中的变量
自定义变量:
变量名=变量值
预定义变量:
AR:归档维护程序的名称,默认ar
CC:C编辑器的名称,默认cc
CXX:C++编辑器的名称,默认为g++
$@:目标的完整名称(包含其文件类型)
$<:第一个依赖文件的名称
$^:所有的依赖文件
获取变量的值的语法:
$(变量名)
示例:
app:main.c a.c b.cgcc -c main.c a.c b.c -o app
变为:
app:main.c a.c b.c$(CC) -c $^ -o $@
标题更厉害简化的写法,不用每一行每一行写文件的gcc -c 输入 输出
wildcard是patsubst函数
然后直接(红色是命令,黄色是输出):