2016-04-13 93 views
23

我想通過一個unix插座連接daemonclient進行項目。如何使用Cargo構建多個二進制文件?

A clientdaemon需要兩個二進制文件,那麼如何告訴Cargo從兩個不同的來源構建兩個目標?

爲了增加一點幻想,我想爲daemon的主體部分設置一個library,並且只需要一個二進制包圍它並通過套接字進行通信。

因此,我們有這樣的樹結構:

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

我能讓它管理這兩個問題一個可執行文件,但是這不是我想做的事情,除非這是非常好的做法。

+0

高度相關:[?鏽包既具有庫和一個二進制](http://stackoverflow.com/q/26946646/155423)。 – Shepmaster

+0

在[Dognert的(http://stackoverflow.com/questions/36604010/how-can-i-build-multiple-binaries-with-cargo/36604610#36604610)答案補充,他們回答我的所有問題。萬分感謝! – RallionRl

回答

35

您可以指定使用[[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作爲貨物編譯所有將src/bin中的文件自動轉換爲具有相同名稱的可執行文件。只有在您不遵守此慣例時,您才需要像上面的代碼片段那樣指定名稱和路徑。

+0

我已經看了文檔Cargo,但我什麼也看不到,你可以指定輸出來存儲二進制文件?例如pathTo:「/ some/path」我很抱歉我的英語。 –

+0

如果你認爲最好能夠創建一個關於這個問題的問題,我可以做到沒有任何問題,可能會更容易找到其他人有相同的問題? –

+0

@AngelAngel你想自定義輸出路徑嗎?默認情況下,它將存儲在'target/debug/$ name'中,其中'$ name'是您在Cargo.toml中指定的'name'。 – Dogbert

相關問題