【问题标题】:Building submodule binary crates with cargo用货物构建子模块二进制箱子
【发布时间】:2017-05-10 12:40:12
【问题描述】:

我有以下箱子结构:

|── proj/
    └── src/
        └── bin/
            └── foo-bin-rs/
                └── src/
                    └── main.rs
                └── Cargo.toml
        └── main.rs
    └── Cargo.toml
    └── build.rs

foo-bin-rs 是一个子模块。我想找到一种干净的方式来发布构建 命令通过货物将构建foo-bin-rs 作为构建的一部分 用于proj 的命令。我没有找到任何使用 src/bin 目录,其中的二进制文件是它们自己独立的 crate,只是 单个文件。我的第一个想法是拥有一个发布自己的build.rs cargo 命令,但我找不到允许通过的货物标志 用作根目录的目录。对此的规范解决方案是什么?

【问题讨论】:

  • 我不太明白你问什么,我的英文不好,但也许这会对你有所帮助,添加在你的初始Cargo.toml [dependencies.foo] path = "./proj/src/bin"跨度>
  • @AngelAngel 感谢您的建议,但foo 不是像 lib 那样编译所需的依赖项,而是具有自己编译步骤的单独 rust 程序。

标签: rust rust-cargo


【解决方案1】:

我的第一个想法是让 build.rs 发出自己的 cargo 命令,但我找不到允许传递目录以作为 root 使用的 cargo 标志。

有一个命令行参数,但它不需要目录;相反,它需要Cargo.toml 文件的完整路径。该参数名为--manifest-path,可用于许多子命令,例如buildrun。是这样使用的(注意相对路径也是有效的):

$ cargo build --manifest-path=/path/to/proj/src/bin/foo-bin-rs/Cargo.toml

如果您需要从构建脚本运行可执行文件,您可以像往常一样简单地使用cargo run 一次性构建和运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-12
    • 2022-09-27
    • 1970-01-01
    • 2015-02-25
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多