生锈 – 创建货物工作区时,清单中未指定目标

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

在我的根文件夹中,我添加了我的子包:

cargo new loader 
cargo new shell --bin

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

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

[workspace]
members = [
    "loader"
    , "shell"
    ]

在我的根文件夹中运行货物构建产生:

06002

鉴于我本质上是一个Visual Studio用户,我对这个[工作区]功能应该如何工作有点困惑,我可以简单地将项目添加到工作区.似乎我还有其他一些与Cargo有关的东西可以达到同样的效果.

最佳答案 如果你的根项目没有产生任何工件(它不是库/二进制文件)那么就
Cargo workspaces RFC而言

它是“虚拟的”,它应该只包含工作区部分:

[workspace]
members = [
    "loader"
    , "shell"
    ]

如果货物构建不起作用,你应该

cd loader
cargo build
cd ..
cd shell
cargo build 

这种配置有什么用?你有共享输出目录“target”和“Cargo.lock”,所以如果你在“loader”子目录中输入“cargo build”,你在“../target/”中编译了库.

Shell会话,演示它是如何工作的:

/tmp $mkdir test
/tmp $cd test
/tmp/test $cargo new loader && cargo new shell --bin
     Created library `loader` project
     Created binary (application) `shell` project
/tmp/test $cat > Cargo.toml
[workspace]
members = ["loader", "shell"]
/tmp/test $cat loader/Cargo.toml 
[package]
name = "loader"
version = "0.1.0"
authors = ["me"]
workspace = ".."

[dependencies]
/tmp/test $cat shell/Cargo.toml 
[package]
name = "shell"
version = "0.1.0"
authors = ["me"]
workspace = ".."

[dependencies]
/tmp/test/shell $cargo build
   Compiling shell v0.1.0 (file:///tmp/test/shell)
    Finished debug [unoptimized + debuginfo] target(s) in 0.57 secs
evgeniy@localhost /tmp/test/shell $ls
Cargo.toml  src
evgeniy@localhost /tmp/test/shell $ls ../
Cargo.lock  Cargo.toml  loader  shell  target
/tmp/test $cargo --version
cargo 0.13.0-nightly (cd8ad10 2016-08-15)

如果您使用Visual Studio工作/工作,请查看the Rust plugin for Jetbrains IDE

点赞