[英]How can I build multiple binaries with Cargo?
我想用一個daemon
和一個client
制作一個項目,通過 unix socket 連接。
一個client
和一個daemon
需要兩個二進制文件,那么我如何告訴Cargo
從兩個不同的來源構建兩個目標呢?
為了增加一點幻想,我想為daemon
的主要部分提供一個library
,並且只需要一個二進制文件來包裝它並通過套接字進行通信。
所以,我們有這種樹結構:
├── Cargo.toml
├── target
| └── debug
| ├── daemon
│ └── client
└── src
├── daemon
│ ├── bin
│ │ └── main.rs
│ └── lib
│ └── lib.rs
└── client
└── bin
└── main.rs
我可以制作一個管理這兩個問題的可執行文件,但這不是我想要做的,除非這是非常好的做法。
您可以使用指定多個二進制文件[[bin]]
提到這里:
[[bin]]
name = "daemon"
path = "src/daemon/bin/main.rs"
[[bin]]
name = "client"
path = "src/client/bin/main.rs"
提示:如果您將這些文件放在src/bin/daemon.rs
和src/bin/client.rs
,您將獲得兩個名為daemon
和client
可執行文件,因為 Cargo 會將src/bin
所有文件編譯為具有相同名稱的可執行文件自動。 僅當您不遵循此約定時,才需要像上面的代碼片段一樣指定名稱和路徑。
另一種方法是使用工作區功能。 由於我們可以擁有多個庫,這將提供更大的靈活性。 示例項目結構:
.
├── Cargo.toml
├── cli
│ ├── Cargo.toml
│ └── src
│ └── main.rs
├── core
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
├── daemon
│ ├── Cargo.toml
│ └── src
│ └── main.rs
├── gui
│ ├── Cargo.toml
│ └── src
│ └── main.rs
└── rpc
├── Cargo.toml
└── src
└── lib.rs
根Cargo.toml
:
[workspace]
members = ["cli", "core", "daemon", "gui", "rpc"]
另一種格式可能是復制Crates.io 源代碼所做的事情,如果您有一個龐大的項目,例如:
src 中的主庫,帶有包含可執行文件的 Bin 文件夾。 然后從您的可執行文件調用您的主庫 crate。
這樣,您的庫是集中的,因此在緩存時更容易查找內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.