我有一个 Rust 项目,我想使用另一个非 Rust 存储库中存在的 protobuf 定义。
我打算下载 protobuf 存储库,创建一个src/common_protobuf
我的主存储库中的模块,使用cargo build
将每个 protobuf 的所有 Rust 实现生成到common_protobuf
模块,然后有选择地将生成的结构重新导出到其预期模块中pub use
.
我似乎找不到指定依赖关系的最佳方法。使用
[build-dependencies]
pbrepo = { git="https://github.com/username/pbrepo" }
结果是
Caused by:
Could not find Cargo.toml in `/Users/username/.cargo/git/checkouts/pbrepo-33abcde7dddd6356/fdefgd9`
我无法提交Cargo.toml
到外部存储库。我考虑过使用 git 子模块或制作系统箱 https://kornel.ski/rust-sys-crate使用子模块和 Cargo.toml,但我更喜欢将构建依赖项放在一个位置,而不必在构建期间同步多个存储库。
我可以在构建脚本中手动下载存储库,并将提交设置为拉入我的build.rs
但我再次希望将所有构建依赖项放在一个地方。
是否有一种机制可以实现此目的,或者这是使用远程 protobuf 定义的更好方法?
Cargo 不支持下载非 Rust 依赖项。您唯一可以让 Cargo 下载的东西是 Cargo 包(宽松的“板条箱”)。
即使您添加了一个Cargo.toml
到您的非 Rust 存储库,这不会有帮助,因为无法询问要从中读取的依赖项的位置。 Cargo 的依赖机制让你可以依赖建库只是,而不是它的源文件(据我所知;我可能错过了一些东西)。
在运行之前,您必须使用一些单独的过程来下载依赖项(自定义脚本、git 子模块...)cargo build
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)