代码之家  ›  专栏  ›  技术社区  ›  Mutant Bob

我如何从分散的(非层次结构的)目录构建一个生锈/货物工作区?

  •  1
  • Mutant Bob  · 技术社区  · 4 月前

    我有一系列多年来积累的项目,当我重构核心库的API时,检查&更新所有依赖该库的应用程序。我不仅必须编写一个shell脚本来迭代它们,而且在所有目录中重新编译相同的内容会占用大量的磁盘空间和计算时间。

    我想我也许可以使用一个工作区,但马上就失望了:

    error: workspace member `/home/user/art/2019/equation-minis/equation-stitcher/Cargo.toml` is not hierarchically below the workspace root `/home/user/src/embroidery/Cargo.toml`
    

    我试着用一个符号链接假装出来,比如 ln -s ../../art . 但由于艺术项目使用了

    [dependencies]
    "filler" = { path = "../../../src/embroidery/filler" }
    

    货物投诉:

    error: failed to load manifest for workspace member `/home/user/src/embroidery/art/2022/united-methodist`
    
    Caused by:
      failed to load manifest for dependency `filler`
    
    Caused by:
      failed to read `/home/user/src/embroidery/src/embroidery/filler/Cargo.toml`
    

    是否有更灵活的方法将一堆铁锈箱视为工作空间(一致的Cargo.lock,共享构建的工件)?

    1 回复  |  直到 4 月前
        1
  •  2
  •   cafce25    4 月前

    这个 Cargo book tells you :

    当位于工作区的子目录中时,Cargo将自动在父目录中搜索 Cargo.toml 文件与a [workspace] 定义以确定使用哪个工作区。这个 package.workspace manifest键可以在成员箱中用于指向工作区根目录,以覆盖此自动搜索。如果成员不在工作区根目录的子目录中,则手动设置可能很有用。

    所以,只需将此添加到您的 Cargo.toml :

    [package]
    workspace = "<path to the directory containing the workspace Cargo.toml>"