构建脚本

有时候,单单使用 cargo 进行构建是不够的。也许你的 crate 需要一些先决条件才能让 cargo 成功编译,比如代码生成,或者一些需要编译的本地代码。为了解决这个问题,我们有了 Cargo 可以运行的构建脚本。

要将构建脚本添加到你的包中,可以在 Cargo.toml 中指定,如下所示:

[package]
...
build = "build.rs"

或者,Cargo 默认会在项目目录中查找 build.rs 文件。

如何使用构建脚本

构建脚本只是另一个 Rust 文件,它将在包中其他任何内容编译之前被编译和调用。因此,它可用于满足你的 crate 的先决条件。

Cargo 通过环境变量 (此处指定) 向脚本提供输入,这些环境变量可以被使用。

脚本通过 stdout 提供输出。所有打印的行都写入 target/debug/build/<pkg>/output。此外,以 cargo: 为前缀的行将由 Cargo 直接解释,因此可用于定义包编译的参数。

有关更详细的规范和示例,请阅读 Cargo 规范