Makefile Learing (下)
Part 10 make的运行
1.make退出码
2.指定Makefile
命令: make -f hchen.mk
3.指定目标
可以手动指定编译的目标
例如: make clean
常用规范的 伪目标
1.all 这个伪目标是所有目标的目标
2.clean 用于删除所有创建的文件
4.检查规则
用于检查我们的命令,或者执行的序列。参数如下:
-n 只是打印命令,不执行,不管目标是否更新
-t 把目标文件的时间更新,变为已编译的状态
-q 如果目标存在,它什么都不会输出,如果不存在,则返回一条错误
5.make的参数
-b -m 这两个参数的作用是忽略其他版本make的兼容性
-B 认为所有的目标都需要更新(重编译)
-C 指定makefile的目录
-d 输出所有的调试信息
-h 显示帮助信息
-s 在运行的时候不显示命令
Part 11 隐含规则
1.使用隐含规则
自动推导会帮助完成 .o 文件的推导
2.隐含规则一览
我们可以使用-r选项来取消所有与设置的隐含规则(某些隐含规则还是会生效)
编译C语言程序的隐含规则:
.o 的目标的依赖目标会自动推导为 .c
生成命令为 “$(CC) –c $(CPPFLAGS) $(CFLAGS)”
3.隐含规则使用的变量
常用的 CC CFLAGS
可以 CC = gcc
CFLAGS = -g
这样就可以使用gcc来编译程序,并且携带调试信息
4.隐含规则链
5.定义模式规则
一个模式规则中,目标的定义需要有 % 字符
% 表示一个或者多个任意字符 其展开发生在变量和函数的展开之后
目标模式中的 % 决定了依赖目标中 % 的样子
如果有模式匹配出了多个目标,make就会产生所有的模式目标
<自动化变量>
$@ 匹配目标中模式定义的集合
$< 依赖目标中第一个目标的名字,如果依赖目标是 % 定义的, 那么将是符合
模式的一系列的文件集合
$^ 所有依赖目标的集合 会去除重复的目标