Makefile 学习笔记
- Makefile
格式
表明输出的目标,输出目标的依赖对象和生成目标需要执行的命令
目标 : 前提依赖
『TAB』执行命令
组成
显式规则
隐式规则
make推导出的规则
变量定义
文件指示
注释
执行
读取makefile文件
读入关联文件
初始化变量
递归式执行(执行依赖链上的目标
显式规则
依赖关系
发生依赖关系,执行命令
伪目标
使用.PHONY
来标识,可以避免和工作目录下的实际文件名发生冲突
1 | .PHONY |
隐含规则
通配符
1 | %.o : %.c |
文件目录
在链接不同目录下的文件时,需要告知make寻找路径:
使用VPATYH变量
1 | # make依次按序搜索文件 |
使用vpath关键字
1 | # 使用 % 来指定特定文件 |
变量
变量声明与使用
在变量声明时,需要对变量进行赋值;在使用时需要使用$(VARNAME)的形式
1 | var = a.c b.c |
变量中的变量
- = 替换
- := 恒等与(常量),按序声明
- ?= 定义未定义过的变量
- += 给一个变量追加一个值
自动化变量
- $@ 目标文件
- $< 第一个依赖文件
- $%
- $?
- $^ 所有的依赖文件
- $+
- $*