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