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