请教Makefile中这段规则命令的具体功能是什么
这段Makefile规则的作用拆解
1. build目标
build: mkdir -p $@
这条规则的作用是创建名为build的目录:
$@是Makefile的自动变量,指代当前目标名(也就是build)mkdir -p命令保证目录能被成功创建——就算目录已存在,或者父级目录不存在,也不会抛出错误
2. 模式规则%: build/%
%: build/% cp $< $@
这是一条通用的模式匹配规则,%是通配符,可匹配任意非空字符串:
- 当你执行
make [目标文件名]时,Make会检查build/[目标文件名]是否存在 - 如果这个依赖文件存在,就执行
cp $< $@命令:$<指代第一个依赖文件,也就是build/[目标文件名]$@指代要生成的目标文件,也就是当前目录下的[目标文件名]
- 简单来说,这条规则就是把
build目录里的对应文件复制一份到当前目录。比如执行make report.pdf,只要build/report.pdf存在,就会把它复制到当前目录生成report.pdf
注意:如果build目录还没创建,直接执行make [目标]会因为找不到build/[目标]而报错,需要先执行make build创建目录。
内容的提问来源于stack exchange,提问作者Erfan
相关产品推荐
相关产品推荐

