使用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