我有多工作空间 Cargo 项目。它有两个工作区,common
并且server
. common
是一个lib
项目,服务器是一个bin
项目。
项目在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
:
[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
但仍然无法构建项目。
[[bin]]\nname = "server/src/main.rs"\n
Run Code Online (Sandbox Code Playgroud)\n\n我怎样才能构建该项目。我缺少什么?
\nSve*_*ach 10
您[package]
在主Cargo.toml
文件中包含了一个部分。此部分表示除了工作区中的包之外,您还想要构建主包。但是,您没有主包的任何源文件,因此 Cargo 会抱怨。
解决方案是简单地省略该[package]
部分,而仅包含[workspace]
. 这会配置一个虚拟工作空间\xe2\x80\x93 ,该工作空间仅是成员包的容器,但本身并不构建包。
有关虚拟工作空间的真实示例,请参阅Rocket 的主Cargo.toml
文件;有关带有主包的工作空间的真实示例,请参阅Tokio 。