Nanopb 是一个采用 ANSI C 编写的小体积 Protocol Buffers 实现。它特别适合用于微控制器,但也适用于任何内存受限的系统。
要使用 nanopb 库,你需要做两件事:
最简单的入门方法是研究 "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 实现,因此你需要安装它。运行测试:
cd tests
scons
这将显示各个测试用例的进度。如果输出没有以错误结束,则测试用例全部通过。
注意:Mac OS X 默认将 'clang' 别名为 'gcc',但实际并不支持与 gcc 相同的命令行选项。要在 Mac OS X 上运行测试,请使用:"scons CC=clang CXX=clang"。同样的方法也可以用于在任何平台上使用不同的编译器运行测试。