11个版本
0.1.0-rc.11 | 2024年8月16日 |
---|---|
0.1.0-rc.10 | 2024年8月12日 |
0.1.0-rc.4 | 2024年7月24日 |
#756 in 魔法豆
46,726 每月下载量
用于 55 个crate (8 直接)
40KB
717 行
从proto文件生成Rust代码。
从$CARGO_MANIFEST_DIR/<input_root>目录递归收集protobuf文件。相应的"cargo:rerun-if-changed=..."行打印到stdout,因此当proto文件更改时,运行此函数的构建脚本将重新运行。生成一个Rust文件并存储在$OUT_DIR/<input_root>/gen.rs文件。
将protobuf文件编译成一个存储在$OUT_DIR/<input_root>/gen.binpb的protobuf描述符。此外,还会打印到stdout的"PROTOBUF_DESCRIPTOR="行。这可以用来在构建过程中收集所有描述符,如下所示
- 将仓库检查到一个新的目录,然后运行"cargo build --all-targets"。我们需要它是新鲜的,以便包含protobuf的每个crate在cargo缓存中只有一个构建。
- 使用grep通过所有target/debug/build/*/output文件查找所有"PROTOBUF_DESCRIPTOR=..."行,并简单地通过连接合并描述符文件。
注意,你可以为此仓库的两个版本运行此程序,并通过运行"buf breaking <after.binpb> --against <before.binpb>"查找破坏性更改,其中before.binpb和after.binpb是这两个版本中连接的描述符。
预计proto文件不是自包含的 - 要从不同的crate导入proto文件,您需要将它们指定为Config.dependencies中的依赖项。在同一个crate中不可能依赖于不同的proto包(因为这些是从同一个构建脚本同时构建的)。
依赖项
~11–22MB
~293K SLoC