8.5 解决问题

解决问题 — Comprehensive Rust

译文 · 基于 Comprehensive Rust

原文链接: https://google.github.io/comprehensive-rust/chromium/adding-third-party-crates/resolving-problems.html

8.5 解决问题

若构建失败,可能是因为 build.rs:在构建时做任意事情的程序。这从根本上与旨在使用静态、确定性构建规则以最大化并行度与构建可重复性的 gn 与 ninja 设计相冲突。

某些 build.rs 行为会被自动支持;其他则需要采取行动:

build script 效果我们的 gn 模板是否支持你需要做的工作
检查 rustc 版本以开关 features是无
检查平台或 CPU 以开关 features是无
生成代码是是——在 gnrt_config.toml 中指定
构建 C/C++否打补丁绕过
任意其他行为否打补丁绕过

幸好,大多数 crate 不包含构建脚本,而且幸好,大多数构建脚本只做前两项。


8.5.1 生成代码的构建脚本

01-生成代码的构建脚本 — Comprehensive Rust

8.5.2 构建 C++ 或执行任意操作的构建脚本

02-构建 C++ 或执行任意操作的构建脚本 — Comprehensive Rust

最后修改 August 11, 2026: 更新 (70a5af133)