【问题标题】:How do I tell Cargo to build files other than main.rs?我如何告诉 Cargo 构建除 main.rs 之外的文件?
【发布时间】:2014-12-23 03:58:43
【问题描述】:

这是我的目录结构:

lowks@lowkster ~/src/rustlang/gettingrusty $ tree .
.
├── Cargo.lock
├── Cargo.toml
├── foo.txt
├── src
│   ├── boolean_example.rs
│   ├── function_goodbye_world.rs
│   ├── listdir.rs
│   ├── looping.rs
│   ├── main.rs
│   ├── pattern_match.rs
│   └── write_to_file.rs
└── target
    ├── build
    ├── deps
    ├── examples
    ├── gettingrusty
    └── native

6 directories, 11 files

当我运行“cargo build”时,它似乎只构建了main.rs。我应该如何更改 Cargo.toml 来构建其余文件?

【问题讨论】:

    标签: rust rust-cargo


    【解决方案1】:

    other.rs文件放入src文件夹(./src/bin/other.rs)的bin子文件夹。并运行cargo build --bin othercargo run --bin other

    【讨论】:

    • 这也可以通过运行 cargo build 来工作。无需附加文件名。
    【解决方案2】:

    Rust 编译器同时编译所有文件以构建 crate,它可以是可执行文件或库。要将文件添加到您的 crate,请将 mod 项目添加到您的 crate 根目录(此处为 main.rs)或其他模块:

    mod boolean_example;
    mod function_goodbye_world;
    mod listdir;
    mod looping;
    mod pattern_match;
    mod write_to_file;
    

    要从您的 crate 根访问另一个模块中定义的项目,您必须使用模块名称来限定该项目。例如,如果您在模块looping 中有一个名为foo 的函数,则必须将其引用为looping::foo

    您还可以添加use 语句以在模块范围内导入名称。例如,如果你添加use looping::foo;,那么你可以使用foo来引用looping::foo

    有关详细信息,请参阅The Rust Programming Language 中的Separating Modules into Different Files

    【讨论】:

      【解决方案3】:

      cargo 可以识别几个不同的types of binaries or targets

      例如,如果文件 boolean_example.rs 是一个您想要运行的独立示例,您可以将其放入 examples 目录中,然后像这样告诉 cargo:

      [[example]]
      name = "boolean" # examples/boolean.rs
      

      这让您可以使用 cargo run --example boolean 调用您的示例

      阅读货物手册的package layout 页面,了解如何构建这些目标目录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-09
        • 2010-10-30
        • 2021-11-06
        • 2010-11-17
        • 2014-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多