Makefile 是一个用来管理项目中源代码编译的文件,通常在 UNIX 和类 UNIX 系统中使用。它包含了一组规则,这些规则告诉 make 工具如何根据源代码文件来构建目标文件以及最终的可执行文件。

一个简单的 Makefile 包含了以下几个部分:

  1. 变量定义: 可以定义一些变量,例如编译器名称、编译选项等。
  2. 目标与依赖关系: 定义了要构建的目标文件以及这些目标文件所依赖的源文件或其他目标文件。
  3. 规则: 每个规则包含了构建目标文件的命令。
  4. 注释: 可以使用 # 开头的行来添加注释,提高代码可读性。

Make file 模板

# Default target when `make` is run without arguments.
.DEFAULT_GOAL := help
width=10

# Generate a list of available commands and their descriptions by parsing the Makefile.
help:
	@echo "命令:"
	@grep -E '^[a-zA-Z0-9_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "  \033[36m%${width}s\033[0m: %s\n", $$1, $$2}'
	@echo ""

dev: ## dev
    @cargo run

build: ## build
    @cargo build

clean: ## 清零缓存文件
	@rm -rf node_modules
	@rm -rf dist
	@cargo clean

# Special targets that are not files:
.PHONY: help

Makefile 比较古老,也是被广泛的支持的一种构建方式。也有其他不错的方式

  • maskfile 基于 markdown 文件,易于阅读,支持很多的脚本比如 bash, python, php, javascript
  • justfile 相对于 make 改进了不少,支持 .env, 也支持多种脚本,比如 python, javascript