编译完成后可以执行任务吗?

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 形式:

  1. 创建一个本地二进制包来执行构建以及您需要的任何其他内容。
  2. 添加 Cargo 别名以调用该箱子。
  3. 调用您的自定义命令:cargo xtask build

另请参阅: