2016-04-13 35 views
23

Bir unix soketinden bağlanan daemon ve client ile bir proje yapmak istiyorum.Kargo ile birden çok ikili nasıl oluşturabilirim?

Bir client ve bir daemon bir iki ikili gerektirir, bu yüzden iki farklı kaynaktan iki hedef oluşturmak için Cargo'a nasıl söylerim?

Bir parça fantezi eklemek için, daemon'un ana kısmı için library ürününe sahip olmak istiyorum ve bunun etrafına sarmak ve soketler arasında iletişim kurmak için bir ikili var.

Yani, biz ağaç mimarisi bu tür vardır:

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

ben hem kaygıları yöneten bir yürütülebilir yapabilir, ama bu çok iyi bir uygulama olmadığı sürece, yapmak istediğim bu değil. here belirtildiği gibi

+0

Son derece ilgili: [Kitaplık ve ikili dosya ile pas paketi] (http://stackoverflow.com/q/26946646/155423). – Shepmaster

+0

[Dognert's] (http://stackoverflow.com/questions/36604010/how-can-i-build-multiple-binaries-with-cargo/36604610#36604610) yanıtının tamamında, sahip olduğum tüm soruları yanıtlıyorlar. Çok teşekkür ederim! – RallionRl

cevap

35

Sen [[bin]] kullanarak birden ikililer belirtebilirsiniz:

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

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

İpucu: Bunun yerine src/bin/daemon.rs ve src/bin/client.rs bu dosyaları koyarsanız, Kargo tüm derler olarak iki yürütülebilir daemon ve client adlı alırsınız src/bin dosyalarında, otomatik olarak aynı ada sahip yürütülebilir dosyalara. Yalnızca bu sözleşmeyi takip etmiyorsanız, yukarıdaki snippet'te bulunan adları ve yolları belirtmeniz gerekir.

+0

Kargo dokümantasyonuna baktım ama hiçbir şey göremiyorum, çıktıyı ikili depolamak için belirtebilirsiniz? örneğin pathTo: "/ some/path" İngilizce'm için üzgünüm. –

+0

Eğer bunun hakkında bir soru oluşturmanın daha iyi olduğunu düşünüyorsanız, bunu hiçbir sorun olmadan yapabilirim, aynı soruyla başkalarını bulmak daha kolay olabilir mi? –

+0

@AngelAngel çıkış yolunu özelleştirmek ister misiniz? Varsayılan olarak 'target/debug/$ name' içinde depolanır; burada' $ name' Kargo.toml'da belirttiğiniz 'name 'olur. – Dogbert