Nanopb 是一个使用 ANSI C 编写的小代码量 Protocol Buffers 实现。它特别适合在微控制器中使用,但也适用于任何内存受限的系统。
要使用 nanopb 库,你需要做两件事
protoc
为 nanopb 编译你的 .proto 文件。开始使用的最简单方法是研究 "examples/simple" 中的项目。 它包含一个 Makefile,在大多数 Linux 系统下应该可以直接工作。 但是,对于任何其他类型的构建系统,请参阅该文件夹中 README.txt 中的手动步骤。
nanopb 生成器被实现为 Google 自己的 protoc
编译器的插件。 这样做的好处是不需要重新实现 .proto 文件的基本解析。 然而,这也意味着你需要 Google 的 protobuf 库才能运行生成器。
如果你已经下载了 nanopb 的二进制包 (Windows, Linux 或 Mac OS X 版本), protoc
二进制文件包含在 'generator-bin' 文件夹中。 在这种情况下,你就可以开始了。 只需运行此命令
generator-bin/protoc --nanopb_out=. myprotocol.proto
但是,如果你使用的是 git checkout 或纯源代码发行版,你需要提供你自己的 protoc
版本和 Google 的 protobuf 库。 在 Linux 上,必要的软件包是 protobuf-compiler
和 python-protobuf
。 在 Windows 上,你可以从源代码构建 Google 的 protobuf 库,也可以使用它的二进制发行版之一。 无论哪种情况,如果你使用单独的 protoc
,你需要手动给出 nanopb 生成器的路径
protoc --plugin=protoc-gen-nanopb=nanopb/generator/protoc-gen-nanopb ...
如果你想进一步开发 nanopb 核心,或者使用你的编译器和平台验证其功能,你将需要运行测试套件。 测试套件的构建规则使用 Scons 实现,因此你需要安装它 (例如:在 Ubuntu 上使用 sudo apt install scons
)。 运行测试:
cd tests
scons
这将显示各种测试用例的进度。 如果输出没有以错误结束,则测试用例成功。
注意:Mac OS X 默认将 'clang' 别名为 'gcc',但实际上并不支持与 gcc 相同的命令行选项。 要在 Mac OS X 上运行测试,请使用:"scons CC=clang CXX=clang"。 同样的方法也可以用于在任何平台上使用不同的编译器运行测试。