Nanopb 是 ansi C 中的小型代码大小协议缓冲区实现。它特别适合在微控制器中使用,但适合任何内存受限的系统。
要使用nanopb库,您需要做两件事:
protoc
编译 nanopb 的 .proto 文件。最简单的入门方法是研究“examples/simple”中的项目。它包含一个 Makefile,应该可以直接在大多数 Linux 系统下运行。但是,对于任何其他类型的构建系统,请参阅该文件夹中 README.txt 中的手动步骤。
Protocol Buffers 消息在.proto
文件中定义,该文件遵循与所有 Protocol Buffers 库兼容的标准格式。要将其与nanopb一起使用,您需要从中生成.pb.c
和.pb.h
文件:
python generator/nanopb_generator.py myprotocol.proto # For source checkout
generator-bin/nanopb_generator myprotocol.proto # For binary package
(注意:有关nanopb-0.3.9.x及更早版本的说明,请参阅此处该特定版本的文档)
Windows、Linux 和 Mac OS X 的二进制包应包含所有必要的依赖项,包括 Python、python-protobuf 库和 protoc。如果您使用 git checkout 或纯源发行版,则需要单独安装 Python。一旦有了 Python,您就可以使用pip install --upgrade protobuf grpcio-tools
安装其他依赖项。
您可以通过创建.options
文件进一步自定义标头生成。有关详细信息,请参阅文档。
如果您想进一步开发nanopb核心,或者使用您的编译器和平台验证其功能,您将需要运行测试套件。测试套件的构建规则是使用 Scons 实现的,因此您需要安装它(例如: sudo apt install scons
或pip install scons
)。运行测试:
cd tests
scons
这将显示各种测试用例的进度。如果输出未以错误结束,则测试用例成功。
注意:Mac OS X 默认将“clang”别名为“gcc”,但实际上并不支持与 gcc 相同的命令行选项。要在 Mac OS X 上运行测试,请使用: scons CC=clang CXX=clang++
。可以使用相同的方式在任何平台上使用不同的编译器运行测试。
对于嵌入式平台,目前支持在 STM32 discovery board 和 simavr AVR 模拟器上运行测试。使用scons PLATFORM=STM32
和scons PLATFORM=AVR
运行这些测试。
Nanopb C 代码本身被设计为可移植且易于在任何平台上构建。通常,更大的障碍是运行生成器,它接收.proto
文件并输出.pb.c
定义。
存在多个系统的构建规则:
extra/nanopb.mk
,参见examples/simple
extra/FindNanopb.cmake
,参见examples/cmake
tests/site_scons
(仅限生成器)BUILD.bazel
conanfile.py
还集成到平台接口: