【问题标题】:What does "manifest path is a virtual manifest, but this command requires running against an actual package" mean?“清单路径是虚拟清单,但此命令需要针对实际包运行”是什么意思?
【发布时间】:2018-03-24 00:01:26
【问题描述】:

我正在尝试构建一个 Rust 项目 (xray)。运行 cargo run 时,我收到以下错误消息

错误:清单路径 D:\xray\building\xray\Cargo.toml 是虚拟的 清单,但此命令需要针对实际包运行 在这个工作区

这究竟是什么意思,如何解决?我正在使用 Cargo 版本 0.25.0 和 Rust 版本 1.24.1。

【问题讨论】:

    标签: rust rust-cargo


    【解决方案1】:

    您的Cargo.tomlvirtual manifest

    在工作区清单中,如果存在 package 表,则工作区根 crate 将被视为普通包以及工作区。如果package 表不存在于工作区清单中,则称为虚拟清单

    使用 虚拟清单 时,与包相关的货物命令(如 cargo build)将不再可用。但是,大多数此类命令都支持--all 选项,将对工作区中的所有非虚拟清单执行该命令。

    cargo run 不起作用,因为 cargo 不知道 要运行什么。有两种选择:

    1. --manifest-path <PATH>:您要运行的 crate 的 Cargo.toml 的路径。
    2. -p, --package <SPEC>:你要运行的包。

    你的情况可能是cargo run --package xray_cli

    【讨论】:

    • 这正是我所需要的。我有一个本地库的示例文件夹,它们是每个子文件夹和它们自己的 Cargo.toml 文件。这效果很好。
    【解决方案2】:

    清单包含包和工作区部分无法正常工作。请检查 Cargo.toml 并从中删除包。

    Virtual Manifest 是新概念,请阅读文档以熟悉它。希望它对你有价值。

    【讨论】:

      猜你喜欢
      • 2011-06-26
      • 2018-04-17
      • 2013-11-27
      • 2012-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-28
      • 1970-01-01
      相关资源
      最近更新 更多