12个版本
| 0.2.0 | 2021年12月14日 |
|---|---|
| 0.1.16 | 2021年12月13日 |
| 0.1.6 | 2021年11月19日 |
#371 in 构建工具
13KB
179 行
Checkexec
checkexec 是一个工具,只有当依赖列表中的文件被更新时才条件性地执行命令。
该工具提供类似 make 的独立可执行行为,其中只有当任何依赖项被更新时才运行命令。像 make 一样,checkexec 只有在依赖项的修改时间晚于目标文件的修改时间时才运行命令。
用法
参数为:<target> <dependencies...> -- <command>。 -- 是必需的分隔符。
checkexec build/my-bin src/my-program.c -- cc -o build/my-bin src/my-program.c
checkexec 直接执行命令,因此不支持shell构造如 '&&' 和 '||'。您可以使用 /bin/bash -c 作为命令,但转义很复杂。您可能更好的选择是使用两次 checkexec 调用。
您可以使用 --infer 推断依赖列表,其中checkexec将检查 command> 的参数中的可访问路径。如果找不到文件,--infer 将失败。
checkexec build/my-bin --infer -- cc -o build/my-bin src/my-program.c
安装
cargo install checkexec
使用说明
checkexec 非常适合从其他文件构建文件的情况。您不必依赖特定于生态系统的工具,可以将 checkexec 作为任何构建工具的一部分。以下是一些示例
- 您在构建命令中构建、调整大小或采样图像,但除非需要,否则不想重新构建它们。
- 您在Python、Rust、Node(或任何其他)构建过程中构建C库。
- 您构建Sass/Less/SCSS文件,并且不想不必要地重新构建它们。
checkexec 与以下工具搭配良好
just结合,创建了一个模块化和现代的构建过程和命令执行器。just解决了make中的许多问题,而checkexec恢复了make的条件重建功能。fd,使得指定依赖文件列表变得容易。例如这里
# Only run your command if a rust file has changed. Note cargo does approximately the
# same thing natively, but you can easily tailor this structure to a custom case.
checkexec target/debug/hello $(fd -e rs . src) -- cargo build
退出码
checkexec 的退出码表现符合预期,具体来说
- 0(成功)如果命令未运行(即目标是最新的)
- 1 如果提供的依赖项或命令未找到
- 否则,当命令运行时,checkexec 将传递命令的退出码。
贡献
贡献使得开源社区成为一个如此美妙的学习、灵感和创造的地方。您做出的任何贡献都将被 大力赞赏。
如果您有改进的建议,请克隆存储库并创建一个拉取请求。您也可以简单地打开一个带有 "enhancement" 标签的问题。别忘了给项目加星标!
(回到顶部)
依赖项
约2MB
约30K SLoC