protobuf-c 1.3.2

protobuf-c 1.3.2

测试已测试
Lang语言 CC
许可证 NOASSERTION
发布最后发布2019年8月

Maximilian SzengelTom Leavy维护。



  • 作者:
  • Dave Benson

Build Status Coverage Status

概述

这是 protobuf-c,它是 Google Protocol Buffers 数据序列化格式的一个 C 实现。它包括 libprotobuf-c,一个纯 C 库,用于实现 protobuf 编码和解码,以及 protoc-c,一个代码生成器,它基于原始的 protoc 将 Protocol Buffer .proto 文件转换为 C 描述符代码。protobuf-c 之前包含一个 RPC 实现;该代码已拆分到 protobuf-c-rpc 项目中。

protobuf-c 起初由 Dave Benson 编写,并一直由他维护到版本 0.15,但现在由一个新的团队维护。感谢,Dave!

邮件列表

protobuf-c 的邮件列表托管在 Google Groups 论坛 上。通过向以下邮箱发送电子邮件进行订阅:[email protected]

构建

protobuf-c 需要安装 C 编译器、C++ 编译器、protobufpkg-config

./configure && make && make install

如果从 git 检出代码进行构建,还需安装 autotoolsautoconfautomakelibtool),并必须通过运行 autogen.sh 脚本来生成构建系统。

./autogen.sh && ./configure && make && make install

文档

请参阅在线Doxygen文档Wiki以获取详细参考。可以通过以下命令从源树中构建Doxygen文档:

make html

概述

使用protoc命令从您的.proto输入文件生成.pb-c.c.pb-c.h输出文件。使用--c_out选项指示protoc使用protobuf-c插件。

protoc --c_out=. example.proto

在您的C源代码中包含.pb-c.h文件。

#include "example.pb-c.h"

将您的C源代码与.pb-c.c文件一起编译。将以下命令的输出添加到您的编译标志中。

pkg-config --cflags 'libprotobuf-c >= 1.0.0'

链接到libprotobuf-c支持库。将以下命令的输出添加到您的链接标志中。

pkg-config --libs 'libprotobuf-c >= 1.0.0'

如果使用autotools,可以使用PKG_CHECK_MODULES宏来检测libprotobuf-c的存在。将以下行添加到您的configure.ac文件中

PKG_CHECK_MODULES([PROTOBUF_C], [libprotobuf-c >= 1.0.0])

这将把编译器标志放入PROTOBUF_C_CFLAGS变量中,把链接器标志放入PROTOBUF_C_LDFLAGS变量中。关于PKG_CHECK_MODULES宏的更多信息,请参阅此处

版本管理

自版本1.0.0起,protobuf-c遵循语义化版本规范

注意,自版本1.0.0起,由protoc-c编译器生成的头文件包含版本保护,以防止由protoc-c生成的.pb-c.h文件和libprotobuf-c支持库提供的公共protobuf-c.h包含文件之间的版本偏移所导致的兼容性问题。虽然我们将尝试不进行需要经常触发版本保护的更改(如发布新的大版本protobuf-c),但这不能保证。因此,建议将用于构建系统的源.proto文件与protoc-c一起重新编译您的.pb-c.c.pb-c.h文件,以适当的源文件依赖关系跟踪,而不是在项目工件(如仓库和发布归档)中发送可能不与系统上安装的libprotobuf-c头文件兼容的潜在过时的.pb-c.c.pb-c.h文件。请注意,protoc-c代码生成器的输出不是独立的,因为一些其他生成C代码的工具(如flexbison)的输出并非如此。

主要API/ABI的变更可能在主要版本发布之间发生,这是定义上的。不推荐在稳定库接口中导出由 protoc-c 生成的代码中的符号,因为这会将 protobuf-c 的ABI嵌入到您库的ABI中。同样,不推荐将生成的 .pb-c.h 文件安装到库API的公共头文件包含路径中,因为这会将您库API的客户端绑定到特定的 libprotobuf-c 版本。

贡献

请将补丁发送到 protobuf-c 邮件列表 或通过在 GitHub 上打开一个拉取请求。

最新发布的 protobuf-c 版本保留在 master 分支上,而 next 分支用于针对下一个版本的提交。请基于 next 分支,而不是 master 分支进行补丁和拉取请求。

所有贡献的版权都归原作者所有,但必须根据 BSD-2-Clause 许可证的条款进行许可。请在其提交消息中添加 Signed-off-by 标题(使用 git commit -s),以表明您同意在这些条款下许可您的贡献。