编译完成后可以执行任务吗?
Can I perform a task after compilation is complete?
我知道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 别名以调用该箱子。
- 调用您的自定义命令:
cargo xtask build
。
另请参阅:
我知道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 别名以调用该箱子。
- 调用您的自定义命令:
cargo xtask build
。
另请参阅: