如何在 Rust 中构建多工作区货物项目

Raj*_*jan 6 rust rust-cargo

我有多工作空间 Cargo 项目。它有两个工作区,common并且server. common是一个lib项目,服务器是一个bin项目。

\n\n

项目在Github的位置在这里。

\n\n

下面是项目结构。

\n\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 common\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0     \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 README.md\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 server\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.toml\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 src\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.rs\n\n4 directories, 6 files\n
Run Code Online (Sandbox Code Playgroud)\n\n

./Cargo.toml 文件的文件内容是

\n\n
[package]\nname = "multi_module_cargo_project"\nversion = "0.1.0"\nauthors = ["rajkumar"]\n\n[workspace]\nmembers = ["common", "server"]\n\n[dependencies]\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我运行命令时cargo build --all

\n\n
[package]\nname = "multi_module_cargo_project"\nversion = "0.1.0"\nauthors = ["rajkumar"]\n\n[workspace]\nmembers = ["common", "server"]\n\n[dependencies]\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我在下面添加了Cargo.toml但仍然无法构建项目。

\n\n
[[bin]]\nname = "server/src/main.rs"\n
Run Code Online (Sandbox Code Playgroud)\n\n

我怎样才能构建该项目。我缺少什么?

\n

Sve*_*ach 10

[package]在主Cargo.toml文件中包含了一个部分。此部分表示除了工作区中的包之外,您还想要构建主包。但是,您没有主包的任何源文件,因此 Cargo 会抱怨。

\n\n

解决方案是简单地省略该[package]部分,而仅包含[workspace]. 这会配置一个虚拟工作空间\xe2\x80\x93 ,该工作空间仅是成员包的容器,但本身并不构建包。

\n\n

有关虚拟工作空间的真实示例,请参阅Rocket 的Cargo.toml文件;有关带有主包的工作空间的真实示例,请参阅Tokio 。

\n