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.gn
的
universe_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
工具。
- 安装 rustup
运行以下命令,将
rustup
配置为使用 Fuchsia Rust 工具链:rustup toolchain link fuchsia $($FUCHSIA_DIR/scripts/youcompleteme/paths.py VSCODE_RUST_TOOLCHAIN) rustup default fuchsia
按照以下说明在
$FUCHSIA_DIR
中克隆并安装fargo
工具: Fargo 使用入门说明。创建配置:
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