2016-04-13 5 views
23

Ich möchte ein Projekt mit einem daemon und einem client machen, die Verbindung über eine Unix-Buchse.Wie kann ich mit Cargo mehrere Binärdateien erstellen?

Ein client und ein daemon benötigt zwei Binärdateien, also wie erteile ich Cargo, um zwei Ziele aus zwei verschiedenen Quellen zu erstellen?

Um ein bisschen Fantasie hinzuzufügen, hätte ich gerne eine library für den Hauptteil der daemon, und habe einfach eine Binärdatei um es herumzuwickeln und über Sockets zu kommunizieren.

So haben wir diese Art von Baumarchitektur:

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

Ich konnte eine ausführbare Datei machen, die beiden Anliegen verwaltet, aber das ist nicht das, was ich tun will, es sei denn, es sehr gute Praxis ist.

+0

Hoch relevant: [Rost-Paket mit einer Bibliothek und einer Binärdatei?] (Http://stackoverflow.com/q/26946646/155423). – Shepmaster

+0

Als Antwort auf [Dognert's] (http://stackoverflow.com/questions/36604010/how-can-i-build-multiple-binaries-with-cargo/36604610#36604610) beantworten sie alle Fragen, die ich bekam. Vielen Dank! – RallionRl

Antwort

35

können Sie mehrere Binärdateien angeben [[bin]] verwenden, wie here erwähnt:

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

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

Tipp: Wenn Sie stattdessen diese Dateien in src/bin/daemon.rs und src/bin/client.rs setzen, werden Sie zwei ausführbare Dateien daemon genannt bekommen und client als Fracht alle kompiliert Dateien in src/bin in ausführbare Dateien mit dem gleichen Namen automatisch. Sie müssen Namen und Pfade wie im obigen Code nur angeben, wenn Sie dieser Konvention nicht folgen.

+0

Ich habe die Dokumentation Cargo angesehen, aber ich kann nichts sehen, können Sie den Ausgang angeben, um die Binärdatei zu speichern? zum Beispiel pathTo: "/ einige/Pfad" Es tut mir leid für mein Englisch. –

+0

Wenn Sie denken, dass es besser ist, eine Frage dazu zu stellen, kann ich es ohne jedes Problem machen, es könnte einfacher sein, andere mit derselben Frage zu finden? –

+0

@AngelAngel Sie möchten den Ausgabepfad anpassen? Standardmäßig wird es in 'target/debug/$ name' gespeichert, wobei' $ name' der Name ist, den Sie in Cargo.toml angeben. – Dogbert

Verwandte Themen