如何以编程方式获取 gRPC / protobuf 版本?
Posted
技术标签:
【中文标题】如何以编程方式获取 gRPC / protobuf 版本?【英文标题】:How to get gRPC / protobuf version programmatically? 【发布时间】:2020-07-30 13:43:50 【问题描述】:是否有知道 gRPC/protobuf 版本或 git commit hash 的 API?我们希望将这些包含在我们的 C++ 应用程序的--version
信息中。
文件gRPC-Core.podspec
、gRPC-C++.podspec
、Protobuf-C++.podspec
等。确实有这些信息;想知道是否可以在无需解析这些文件的情况下提取相同的内容。
【问题讨论】:
【参考方案1】:gRPC 在其 API 中公开版本:
const GRPCAPI char* grpc_version_string ( void )
对于 C++ 实现,<grpcpp/grpcpp.h>
标头中似乎有以下方法:
std::string grpc::Version()
对于 protobuf,宏 GOOGLE_PROTOBUF_VERSION
是其版本的整数值,可以使用以下 API 转换为字符串:
std::string google::protobuf::internal::VersionString(int version)
【讨论】:
谢谢,但我认为这个 API 提供了 gRPC 核心的版本字符串,它来自src/core/lib/surface/version.cc
: const char* grpc_version_string(void) return "10.0.0";
我正在寻找 gRPC 的 c++ 库的版本,例如对于github.com/grpc/grpc/releases/tag/v1.30.2,我希望这是 1.30.2
在浏览完模板后,我添加了<grpcpp/grpcpp.h>
公开的版本,这似乎就是您要查找的版本。以上是关于如何以编程方式获取 gRPC / protobuf 版本?的主要内容,如果未能解决你的问题,请参考以下文章
教你使用ProtoBuf,通过gRPC服务在Android上进行网络请求