解决问题
如果构建失败,可能是 build.rs 文件所致:这些程序在构建过程中执行了任意操作。这与 gn 和 ninja 的设计完全不相符,它们旨在实现静态、确定性的构建规则,以最大限度地提高构建的并行性和可重复性。
系统支持自动进行某些 build.rs 操作;而有些需要进行额外的处理:
| 构建脚本效果 | 我们的 gn 模板均支持 | 您需要完成的工作 |
|---|---|---|
| 检查 rustc 版本以配置启用和停用功能 | 是 | 无 |
| 检查平台或 CPU 以配置启用和停用功能 | 是 | 无 |
| Generating code | 是 | 是的,在 gnrt_config.toml 中指定 |
| 构建 C/C++ | 否 | 进行补丁修复 |
| Arbitrary other actions | 否 | 进行补丁修复 |
幸运的是,大多数 crate 不包含构建脚本,而且大多数的构建脚本只执行前两项操作。