构建脚本
有时候,cargo
的常规构建可能不足以满足需求。你的 crate 可能在 cargo
成功编译之前需要一些先决条件,比如代码生成,或者需要编译一些本地代码。为了解决这个问题,我们可以使用 Cargo 能够运行的构建脚本。
要为你的包添加构建脚本,可以在 Cargo.toml
中指定,如下所示:
[package]
...
build = "build.rs"
如果没有指定,Cargo 默认会在项目目录中查找 build.rs
文件。
如何使用构建脚本
构建脚本只是另一个 Rust 文件,它会在编译包中的其他内容之前被编译和调用。因此,它可以用来满足你的 crate 的先决条件。
Cargo 通过环境变量为脚本提供输入,这些环境变量可以被使用。具体参见这里的说明。
脚本通过标准输出提供输出。所有打印的行都会被写入 target/debug/build/<pkg>/output
。此外,以 cargo:
为前缀的行会被 Cargo 直接解释,因此可以用来为包的编译定义参数。
如需了解更多详细规范和示例,请参阅 Cargo 构建脚本规范。