8.5.1 生成代码的构建脚本
01-生成代码的构建脚本 — Comprehensive Rust
1分钟内可阅读完
译文 · 基于 Comprehensive Rust
若构建失败,可能是因为 build.rs:在构建时做任意事情的程序。这从根本上与旨在使用静态、确定性构建规则以最大化并行度与构建可重复性的 gn 与 ninja 设计相冲突。
某些 build.rs 行为会被自动支持;其他则需要采取行动:
| build script 效果 | 我们的 gn 模板是否支持 | 你需要做的工作 |
|---|---|---|
| 检查 rustc 版本以开关 features | 是 | 无 |
| 检查平台或 CPU 以开关 features | 是 | 无 |
| 生成代码 | 是 | 是——在 gnrt_config.toml 中指定 |
| 构建 C/C++ | 否 | 打补丁绕过 |
| 任意其他行为 | 否 | 打补丁绕过 |
幸好,大多数 crate 不包含构建脚本,而且幸好,大多数构建脚本只做前两项。
01-生成代码的构建脚本 — Comprehensive Rust
02-构建 C++ 或执行任意操作的构建脚本 — Comprehensive Rust