Makefile 入门:用几条规则统一项目的常用命令
【摘要】 介绍如何用 Makefile 把安装依赖、测试、运行等常用命令封装成目标,含 .PHONY 与变量依赖示例。
一个小项目里常常有一串重复操作:安装依赖、跑测试、启动本地服务、打包镜像。每个人记的命令略有不同,新人上手也容易漏步骤。Makefile 本来是为编译 C 项目设计的,但用来封装这些「项目脚本」同样好用:把常用动作写成目标,执行时只敲 make 加名字即可。
一、一个最小例子
在项目根目录创建名为 Makefile 的文件(注意大小写):
.PHONY: install test run
install:
pip install -r requirements.txt
test:
pytest -q
run:
python app.py
之后执行 make install、make test、make run 就会跑对应命令。注意命令行前面必须是 Tab,不能用空格,否则 make 会报错。
二、.PHONY 为什么重要
如果当前目录碰巧有一个叫 test 的文件或文件夹,make 可能认为「目标已是最新」而不再执行。写成 .PHONY: test 是告诉 make:这些名字只是任务标签,不是要生成的文件,每次都要执行。
三、带变量和依赖
可以把重复的值抽成变量,并把目标串起来:
PYTHON ?= python3
.PHONY: check
lint:
ruff check .
check: lint test
@echo "all good"
make check 会先跑 lint,再跑 test。用 ?= 定义的变量允许在命令行覆盖,例如 make PYTHON=python3.12 run。
四、使用建议
把「新人第一次要跑的几步」都写进 Makefile,并在 README 里写一句「请看 make help」;目标名用简短英文动词;真正复杂的逻辑仍可调用脚本,Makefile 只负责入口。这样团队协作时,常用操作就有了统一入口。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)