Makefile 入门:用几条规则统一项目的常用命令

举报
yd_299387399 发表于 2026/11/05 15:58:20 2026/11/05
【摘要】 介绍如何用 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)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。