2016-04-13 20 views
23

मैं एक यूनिक्स सॉकेट के माध्यम से कनेक्ट, daemon और client के साथ एक प्रोजेक्ट बनाना चाहता हूं।मैं कार्गो के साथ कई द्विआधारी कैसे बना सकता हूं?

client और daemon दो द्विआधारी की आवश्यकता है, तो मैं दो अलग-अलग स्रोतों से दो लक्ष्य बनाने के लिए Cargo कैसे कहूं?

कुछ फंतासी जोड़ने के लिए, मैं daemon के मुख्य भाग के लिए library रखना चाहता हूं, और बस इसके चारों ओर लपेटने और सॉकेट के माध्यम से संवाद करने के लिए एक बाइनरी है।

तो, हम पेड़ वास्तुकला के इस प्रकार है:

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

मैं एक निष्पादन योग्य है जो दोनों की चिंताओं का प्रबंधन करता है बना सकता है, लेकिन यह नहीं है कि मैं क्या करना चाहते हैं, जब तक कि यह बहुत अच्छी आदत है। आप दो निष्पादनयोग्य नामित कर देंगे daemon और client कार्गो सभी संकलित, क्योंकि आपके लिए src/bin/daemon.rs और src/bin/client.rs में इन फ़ाइलों को रखते हैं,:

+0

अत्यधिक प्रासंगिक: [लाइब्रेरी और बाइनरी दोनों के साथ जंग पैकेज?] (Http://stackoverflow.com/q/26946646/155423)। – Shepmaster

+0

[डोग्नर्ट्स] के पूरक (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 में फ़ाइलों को स्वचालित रूप से उसी नाम के साथ निष्पादन योग्य में। यदि आप इस सम्मेलन का पालन नहीं करते हैं तो आपको उपरोक्त स्निपेट में नाम और पथ निर्दिष्ट करना होगा।

+0

मैंने प्रोजेक्ट कार्गो को देखा है, लेकिन मैं कुछ भी नहीं देख सकता, आप बाइनरी को स्टोर करने के लिए आउटपुट निर्दिष्ट कर सकते हैं? उदाहरण के लिए पथ: "/ कुछ/पथ" मुझे मेरी अंग्रेजी के लिए खेद है। –

+0

यदि आपको लगता है कि इसके बारे में कोई प्रश्न बनाना बेहतर है, तो मैं इसे बिना किसी समस्या के कर सकता हूं, अन्य लोगों को एक ही प्रश्न के साथ ढूंढना आसान हो सकता है? –

+0

@AngelAngel आप आउटपुट पथ को कस्टमाइज़ करना चाहते हैं? डिफ़ॉल्ट रूप से इसे 'लक्ष्य/डीबग/$ नाम' में संग्रहीत किया जाएगा जहां '$ name' 'name' है जिसे आप Cargo.toml में निर्दिष्ट करते हैं। – Dogbert

संबंधित मुद्दे