使用 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在我的根文件夹中运行会产生:
Run Code Online (Sandbox Code Playgroud)[package] name = "rustenv" version = "0.1.0" authors = ["ME"] [workspace] members = [ "loader" , "shell" ]
[workspace]鉴于我本质上是 Visual Studio 用户,我对此功能应该如何工作感到有些困惑,在那里,我可以简单地将项目添加到工作区。看来我还需要与 Cargo 做一些其他事情才能获得相同的效果。
如果您的根项目不生成任何工件(它不是库/二进制文件),那么根据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 插件