rust - 如何使用 Cargo 构建多个二进制文件?

标签 rust rust-cargo

我想用daemonclient 创建一个项目,通过unix socket 连接。

客户端守护进程 需要两个二进制文件,那么我如何告诉 Cargo 从两个不同的来源构建两个目标?

为了增加一点幻想,我想为 daemon 的主要部分创建一个library,并且只需要一个二进制文件来包装它并且通过套接字进行通信。

所以,我们有这种树结构:

├── Cargo.toml
├── target
|   └── debug
|       ├── daemon
│       └── client
└── src
    ├── daemon
    │   ├── bin
    │   │   └── main.rs
    │   └── lib
    │       └── lib.rs
    └── client
        └── bin
            └── main.rs

我可以制作一个可执行文件来管理这两个问题,但这不是我想要做的,除非这是很好的做法。

最佳答案

您可以使用 [[bin]] 指定多个二进制文件,如前所述 here :

[[bin]]
name = "daemon"
path = "src/daemon/bin/main.rs"

[[bin]]
name = "client"
path = "src/client/bin/main.rs"

提示:如果您将这些文件放在 src/bin/daemon.rssrc/bin/client.rs 中,您将获得两个名为 daemonclient as Cargo 会自动将 src/bin 中的所有文件编译成同名的可执行文件。仅当您不遵循此约定时,才需要像上面的代码片段一样指定名称和路径。

关于rust - 如何使用 Cargo 构建多个二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36604010/

相关文章:

rust - 通用枚举和 impl,无法使用

rust - 如何使用cargo 找到最新稳定版本的 crate ?

visual-studio-code - 在 vscode 中带有参数的 RUST cargo 运行任务

rust - 分配数据以传递给 FFI 调用的正确方法是什么?

rust - 当结构具有异步方法时,如何指定Rust结构字段必须满足特征?

rust - 结构体的内存地址如何在函数内部和结构体返回后相同?

rust - 测试溢出时忽略 Cargo build --release 选项

rust - 如何将 char 转换为整数并在 Rust 中匹配武器?

rust - 从 for 循环内部返回导致类型不匹配

docker - 优化 Docker 中的 cargo 构建时间