1. ホーム
  2. rust

[解決済み] Cargoで複数のバイナリをビルドするにはどうしたらいいですか?

2022-04-24 06:18:36

質問

を使ったプロジェクトを作りたいのですが、どうすればいいですか? daemonclient で、unixのソケットで接続します。

A clientdaemon は2つのバイナリを必要としますが、どのようにして Cargo を使用して、2つの異なるソースから2つのターゲットをビルドすることはできますか?

ちょっとファンタジックに付け加えると、このように library のメイン部分には daemon で、それを包むバイナリを用意し、ソケットで通信するだけです。

つまり、このようなツリー型アーキテクチャになっているわけです。

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

両方の関心事を管理する1つの実行ファイルを作ることもできますが、よほど良い習慣でない限り、それは私がしたいことではありません。

どのように解決するのですか?

複数のバイナリを指定するには [[bin]] というように ここで :

[[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 という名前の2つの実行形式が得られます。 daemonclient にあるすべてのファイルをCargoがコンパイルするので src/bin を自動的に同名の実行ファイルに変換します。この慣習に従わない場合のみ、上記のスニペットのように名前とパスを指定する必要があります。