构建脚本

有时候,cargo 的常规构建可能不足以满足需求。你的 crate 可能在 cargo 成功编译之前需要一些先决条件,比如代码生成,或者需要编译一些本地代码。为了解决这个问题,我们可以使用 Cargo 能够运行的构建脚本。

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

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

如果没有指定,Cargo 默认会在项目目录中查找 build.rs 文件。

如何使用构建脚本

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

Cargo 通过环境变量为脚本提供输入,这些环境变量可以被使用。具体参见这里的说明

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

如需了解更多详细规范和示例,请参阅 Cargo 构建脚本规范