创建 Cargo 工作区时,清单中未指定目标

Bit*_*ler 7 rust rust-cargo

使用 Rust 1.11 和 Cargo 1.12(每晚),我试图创建一个[workspace]包含一些库和一些可执行文件的。

在我的根文件夹中,我添加了我的子板条箱:

cargo new loader 
cargo new shell --bin
Run Code Online (Sandbox Code Playgroud)

然后我将cargo.toml下面显示的内容添加到我的根文件夹中。

cargo new loader 
cargo new shell --bin
Run Code Online (Sandbox Code Playgroud)

cargo build在我的根文件夹中运行会产生:

[package]
name = "rustenv"
version = "0.1.0"
authors = ["ME"]

[workspace]
members = [
    "loader"
    , "shell"
    ]
Run Code Online (Sandbox Code Playgroud)

[workspace]鉴于我本质上是 Visual Studio 用户,我对此功能应该如何工作感到有些困惑,在那里,我可以简单地将项目添加到工作区。看来我还需要与 Cargo 做一些其他事情才能获得相同的效果。

fgh*_*ghj 7

如果您的根项目不生成任何工件(它不是库/二进制文件),那么根据Cargo 工作区 RFC ,它是“虚拟的”,它应该仅包含以下workspace部分:

[workspace]
members = [
    "loader"
    , "shell"
    ]
Run Code Online (Sandbox Code Playgroud)

如果cargo build不起作用,你应该

cd loader
cargo build
cd ..
cd shell
cargo build 
Run Code Online (Sandbox Code Playgroud)

在这样的配置下有什么作用?您共享输出目录“target”和“Cargo.lock”,因此如果您在“loader”子目录中键入“cargo build”,则您已在“../target/”中编译了库

演示其工作原理的 Shell 会话:

cd loader
cargo build
cd ..
cd shell
cargo build 
Run Code Online (Sandbox Code Playgroud)

如果您使用 Visual Studio,请查看Jetbrains IDE 的 Rust 插件