问题描述
我知道 build.rs
可以在程序编译开始之前执行任务,所以我可以准备任何我想要的东西。
如果在编译完成后要执行一项任务,作为某种清理,该怎么办?有没有办法做这样的事情?
举一个简单的例子:在编译之前,无论出于何种原因,我都想将文件从 foo.txt
重命名为 abc.txt
。然后之后编译终止我想将它重命名回foo.txt
。
解决方法
不,从 Rust 1.50 开始就没有。 RFC #1777 — Add Cargo post-build scripts 提出了这个建议,但没有被接受。
与此同时,一些 crate 制作了自己的本地 Cargo 第三方命令来模仿这一点。可以在 cargo-xtask 存储库中找到这种风格的文档。 TL;DR 形式:
- 创建一个本地二进制包,用于执行构建和您需要的任何其他操作。
- 添加一个 Cargo 别名来调用该 crate。
- 调用您的自定义命令:
cargo xtask build
。
另见: