2 个版本
0.1.1 | 2024 年 3 月 19 日 |
---|---|
0.1.0 | 2022 年 8 月 28 日 |
189 在 构建工具 中
每月 387 次下载
在 axum-connect-build 中使用
9KB
70 行
protoc-fetcher
Rust 库,用于获取指定版本的官方 Protocol Buffer 编译器 (protoc
) 发布版。
protoc-fetcher
下载 protobuf 编译器 (protoc) 的官方 发布版,并返回其路径。
use std::env;
use std::path::Path;
// From within build.rs...
let protoc_version = "21.5";
let out_dir = env::var("OUT_DIR").unwrap();
let protoc_path = protoc_fetcher::protoc(protoc_version, Path::new(&out_dir));
将下载与给定 version
匹配的发布版存档,并将 protoc 二进制文件提取到 out_dir
的子目录中。您可以从 发布页面 选择一个版本,例如 "21.5"。不要以 "v" 开头。
out_dir
可以是任何您想要的位置,但如果从构建脚本调用此函数,您可能需要使用 OUT_DIR
环境变量(Cargo 会自动为构建脚本设置)。
如果已存在于 out_dir
中,则将重用先前下载的与正确版本匹配的 protoc 二进制文件。
与 Tonic 或 Prost 一起使用
如果您正在使用 tonic-build(或 prost-build),则可以通过设置 PROTOC
环境变量来指示它使用获取的 protoc
二进制文件。
use std::env;
use std::path::Path;
let out_dir = env::var("OUT_DIR").unwrap();
let path_to_my_protos = Path::new("a/b/c");
let protoc_path = protoc_fetcher::protoc("21.2", Path::new(&out_dir)).unwrap();
env::set_var("PROTOC", &protoc_path);
tonic_build::compile_protos(path_to_my_protos);
依赖项
~4–19MB
~242K SLoC