makefile-utils 能帮助你使用 make
命令进行开发。
它提供一系列 Makefile Target 来增强你的 Makefile。
版本详见 tags。 版本命名遵守 Semantic Versioning 2.0.0。
你可以用 curl
或者 git
安装它。
VERSION=v0.1.0
curl -LO "https://github.com/adoyle-h/makefile-utils/releases/download/$VERSION/makefile-utils.tgz{,.md5}"
# 检查文件完整性
md5sum -c ./*.md5
tar -xzf ./makefile-utils.tgz
VERSION=v0.1.0
git clone --depth 1 --branch "$VERSION" https://github.com/adoyle-h/makefile-utils.git
cd makefile-utils
make init OUTPUT=your_project
或者
cd makefile-utils
sudo ln -s $PWD/bin/makefile-utils /usr/local/bin/
makefile-utils init your_project
它会执行以下步骤:
- 在你的项目里创建 makefile-utils
- 在你的 Makefile 里增加
include ./makefile-utils/*.mk
。你可以删掉用不着的文件。 - 如果你的 Makefile 里没有定义
.DEFAULT_GOAL
,会添加.DEFAULT_GOAL := help
。
- 于是运行
make
等同于make help
。 - 你也可以设置
make init OUTPUT=your_project DEFAULT_TARGET=
来跳过它。
- 如果你的项目里存在 .gitignore 文件,则添加
/makefile-utils/*
和!/makefile-utils/*.mk
到文件里。 - 如果你的项目里存在 .editorconfig 文件,则添加
[{Makefile,*.mk}] indent_style = tab
到文件里。
现在切换到你的项目目录,然后执行 make help
查看使用帮助。
默认情况下它只显示 target 名字。在 target 上一行增加 @desc {description}
来打印 target 的描述。
它不会打印用 makefile 函数定义的 target,比如 $(target):
。但你可以在 makefile 里添加 @target {name} {description}
。
生成 CHANGELOG 文件,并更新它。
别直接运行 make CHANGELOG
。把下面的代码加入到你的 Makefile。
.PHONY: changelog
changelog:
$(MAKE) CHANGELOG NEXT_VERSION=$(shell cat VERSION)
然后执行 echo "0.1.0" > VERSION
然后 make changelog
就能更新 CHANGELOG 文件了。
你可以预览生成后的 CHANGELOG 例子。 阅读 makefile-utils 的 Makefile 作为参考。
你也可以修改 CHANGELOG 文件的输出路径。
.PHONY: changelog
changelog:
$(MAKE) CHANGELOG NEXT_VERSION=0.1.0 OUTPUT=change_log.md
make semver-major
只打印下一个 major 版本号。另外还有 make semver-minor
和 make semver-patch
。
你可以在其他 target 中调用这个 target。
比如,替换 README 文件里的 VERSION=v...
。
# @target bump-major bump major version (x)
# @target bump-minor bump minor version (y)
# @target bump-patch bump patch version (z)
BUMP_TARGETS := $(addprefix bump-,major minor patch)
.PHONY: $(BUMP_TARGETS)
$(BUMP_TARGETS):
@$(MAKE) $(subst bump-,semver-,$@) > VERSION
@sed -i.bak -E "s/^VERSION=.+/VERSION=v$$(cat VERSION)/" README.md
@rm README.md.bak VERSION
可以给指定目录里的每个文件生成.md5 文件。
默认目录是 ./dist
。但你可以指定其他目录 make md5 DIST=./dist
。
校验指定目录下的文件的 md5。
默认目录是 ./dist
。但你可以指定其他目录 make md5-check DIST=./dist
。
使用 lychee 检查 markdown 文件里的死链。
复制 lychee.toml
到你的目录里。
你可以创建 .lycheeignore
文件 来忽略某些 url。 例子。
为了避免检查 GitHub 链接时受到访问限制。你可以设置 GITHUB_TOKEN=xxx make md-check-links
。
Github Token 可以在你的 GitHub 账户设置页面中生成。
令牌无需额外权限足以检查公共仓库的链接。
后续会补充更多方便的 makefile target。
欢迎在 Discussion 中与我讨论需求。
在创建新的 Issue/Discussion/PR,以及发表评论之前,请先阅读贡献指南.
对于未翻译的文档,推荐使用 DeepL 翻译器阅读。
Copyright 2023 ADoyle ([email protected]). Some Rights Reserved. The project is licensed under the Apache License Version 2.0.
See the LICENSE file for the specific language governing permissions and limitations under the License.
See the NOTICE file distributed with this work for additional information regarding copyright ownership.
- 我创建的其他 shell 项目。