如何使用 Cargo 拥有多个嵌套工作区?
我有以下项目结构:
myworkspace
??? project_a
? ??? Cargo.toml
??? project_b
? ??? Cargo.toml
? ??? project_b_dependency
| ??? Cargo.toml
??? Cargo.toml
Run Code Online (Sandbox Code Playgroud)
哪里project_b_dependency是一个大库,它是一个 git 子模块,它本身有一个工作区。
运行时出现错误,cargo build因为工作区中有工作区。
$ cargo build
error: multiple workspace roots found in the same workspace:
/myworkspace
/myworkspace/project_b/project_b_dependency
Run Code Online (Sandbox Code Playgroud)
有没有简单的解决方法?我想project_b_dependency作为子模块保留源代码管理。
这不是重构到工作区结构导致 extern crate 导入不起作用的副本,因为我想知道如何处理嵌套的工作区。
嵌套工作区似乎很难管理,因此\n不可能更改项目的布局:
\n\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 myworkspace\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 Cargo.lock\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\x9c\xe2\x94\x80\xe2\x94\x80 project_a\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \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\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\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 project_b\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \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\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\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 lib.rs\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 main.rs\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 project_b_dependency\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 lib.rs\nRun Code Online (Sandbox Code Playgroud)\n\n在myworkspace/Cargo.toml:
[workspace]\nmembers= ["project_a", "project_b"]\nRun Code Online (Sandbox Code Playgroud)\n\n在myworkspace/project_b/Cargo.toml
[dependencies]\nproject_b_dependency = {path = "../../project_b_dependency"}\nRun Code Online (Sandbox Code Playgroud)\n\n我尝试过使用workspace.exclude在您的布局中使用属性,但没有成功。