5 构建规则

构建规则 — Comprehensive Rust

译文 · 基于 Comprehensive Rust

原文链接: https://google.github.io/comprehensive-rust/chromium/build-rules.html

5 构建规则

Rust 代码通常用 cargo 构建。Chromium 为了效率使用 gn 与 ninja——其静态规则允许最大并行度。Rust 也不例外。

向 Chromium 添加 Rust 代码

在某个现有的 Chromium BUILD.gn 文件中,声明一个 rust_static_library:

import("//build/rust/rust_static_library.gni")

rust_static_library("my_rust_lib") {
  crate_root = "lib.rs"
  sources = [ "lib.rs" ]
}

你也可以添加对其他 Rust 目标的 deps。稍后我们将用它来依赖第三方代码。

你必须_同时_指定 crate 根与完整的源文件列表。crate_root 是交给 Rust 编译器、表示编译单元根文件的文件——通常是 lib.rs。sources 是 ninja 为确定何时需要重建所需的全部源文件完整列表。

(不存在 Rust source_set,因为在 Rust 中,整个 crate 就是一个编译单元。static_library 是最小单元。)

学员可能想知道为何我们需要一个 gn 模板,而不是使用 gn 对 Rust 静态库的内置支持。答案是该模板提供对 CXX 互操作、Rust features 与单元测试的支持,其中一些我们稍后会用到。


5.1 Unsafe 代码

01-Unsafe 代码 — Comprehensive Rust

5.2 从 Chromium C++ 依赖 Rust 代码

02-从 Chromium C++ 依赖 Rust 代码 — Comprehensive Rust

5.3 Visual Studio Code

03-Visual Studio Code — Comprehensive Rust

5.4 练习

04-练习 — Comprehensive Rust

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