How can I build multiple binaries with Cargo?
我想制作一个
为了增加一点幻想,我想对
因此,我们有这种树结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ├── Cargo.toml ├── target | └── debug | ├── daemon │ └── client └── src ├── daemon │ ├── bin │ │ └── main.rs │ └── lib │ └── lib.rs └── client └── bin └── main.rs |
我可以使一个可执行文件同时解决这两个问题,但这不是我想做的,除非这是一种很好的做法。
您可以使用
1 2 3 4 5 6 7 | [[bin]] name ="daemon" path ="src/daemon/bin/main.rs" [[bin]] name ="client" path ="src/client/bin/main.rs" |
提示:如果将这些文件放在
另一种方法是使用此处提到的工作区功能。由于我们可以拥有多个库,因此这将提供更大的灵活性。项目结构示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | . ├── 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 |
根
1 2 | [workspace] members = ["cli","core","daemon","gui","rpc"] |
如果您有一个庞大的项目,另一种格式可能是复制Crates.io源代码的工作,例如:
src中的主库,带有一个包含可执行文件的Bin文件夹。
然后从可执行文件中调用主库箱。
这样,您的库就可以集中化,以便在缓存时更容易查找内容。