在 Fuchsia 上使用货运服务

Rust 生态系统中的许多工具都假定您使用 cargo。对于 不过,我们的 build 中没有对应项,但是有一个用于 正在生成 Cargo.toml 文件。您可以自行运行货物(为 cargo check, 实例)。

此功能由志愿者维护。GN 和 Cargo 不匹配,可能会导致生成的 Cargo.toml 文件无法在 还是需要进行手动调整。因此,紫红色树中的货物 正式支持;有时可能会中断

正在生成 Cargo.toml 个文件

如需根据 GN 的 build 图生成 cargo 文件,请将 --cargo-toml-gen 添加到 fx set 命令或将 //build/rust:cargo_toml_gen 目标设为 $OUT_DIR/args.gnuniverse_package_labels。这会使 gn gen 增加几秒钟。确保运行 更新设置后的完整 fx build

fx set PRODUCT.BOARD --cargo-toml-gen <other fx args>
fx build

注意:如果需要 Cargo.toml 才能完成 fx build,例如在 为 Rust crate 生成新的 C 绑定,您可能需要运行 cbindgen 需要改用 //build/rust:cargo_toml_gen 构建目标。此目标只会 构建 Cargo.toml 文件。

大多数编辑器都要求 Cargo.toml 文件位于 src/ 目录中。可以使用以下代码生成指向这些文件的符号链接 命令,其中 //foo/path/to/target:some_label 是所需的 GN 目标 处理:

fx gen-cargo foo/path/to/target:some_label

注意:以上方法不适用于 rustc_staticlib 目标,例如锈红色 用于生成 C 绑定的 crate 通常使用 rustc_staticlib 目标 模板。对于 rustc_staticlib 目标,您应改用以下命令。

fx gen-cargo foo/path/to/target:_some_label_rustc_static

请注意,此标签必须指向 rustc_... GN 模板 (不是 Fuchsia 软件包或其他 GN 目标)。例如:

rustc_binary("some_label") {
   ...
}

生成 .cargo/config 文件

部分插件需要 .cargo/config 文件才能让 cargo 针对 Fuchsia 正常运行 (例如,运行 cargo check)。为了轻松生成此文件,请使用 fargo 工具。

  1. 安装 rustup
  2. 运行以下命令,将 rustup 配置为使用 Fuchsia Rust 工具链:

    rustup toolchain link fuchsia $($FUCHSIA_DIR/scripts/youcompleteme/paths.py VSCODE_RUST_TOOLCHAIN)
    rustup default fuchsia
    
  3. 按照以下说明在 $FUCHSIA_DIR 中克隆并安装 fargo 工具: Fargo 使用入门说明

  4. 创建配置:

    cd $FUCHSIA_DIR && fargo write-config
    # Note the caveats about changing architecture in the fargo readme
    # https://fuchsia.googlesource.com/fargo/#creating-a-cargo_config