如何使用 nanopb 编译 .proto + .options 文件

Posted

技术标签:

【中文标题】如何使用 nanopb 编译 .proto + .options 文件【英文标题】:how to compile .proto + .options file using nanopb 【发布时间】:2017-08-24 07:21:12 【问题描述】:

我编写了一个 .options 文件并将其放在与 .proto 文件相同的目录中。 然后,我尝试使用命令编译它(使用 nanopb 编译器)

generator-bin/protoc --nanopb_out=. message.proto -s message.options

得到了这个错误:

Unknown flag: -s

那我做错了什么? 我需要在 .proto 文件中导入我的选项文件吗? 我还应该做些什么来让它发挥作用吗?

【问题讨论】:

检查this,我想它可能对你有帮助。 【参考方案1】:

Google 的protoc 有一种特殊的语法,用于将选项传递给插件。插件选项作为nanopb_out 的参数放入,并用冒号(:)与实际目标路径分隔。

generator-bin/protoc '--nanopb_out=-v -f message.options:.' message.proto

但是,如果您的.options 文件与.proto 同名并且位于同一目录中,则 nanopb 插件应该会自动找到并使用它。

还请注意,nanopb 的-s 标志需要命令行上的一对设置,而-f 需要一个文件名。指定-v 对于获取详细消息也很有用,无论它是否加载了选项文件。您可以通过运行获取命令行选项的完整列表:

generator-bin/nanopb_generator --help

【讨论】:

对我来说这不起作用。它接缝,插件只接受一个参数。如果我尝试generator-bin/protoc --nanopb_out=-T -v:. message.proto,我会收到错误Unknown flag: -v。你的单引号技巧也没有帮助。 插件本身确实接受多个参数,但通过protoc 传递它们可能很困难。在外壳上使用时,引用整个部分应该可以工作。如果没有任何帮助,您始终可以分两步完成:protoc -o message.pb message.protopython nanopb_generator.py -T -v message.pb 谢谢!这有帮助!

以上是关于如何使用 nanopb 编译 .proto + .options 文件的主要内容,如果未能解决你的问题,请参考以下文章

nanopb的使用

如何将已编译的协议缓冲区转换回 .proto 文件?

如何解决导入object_detection / protos / image_resizer.proto但未使用protobuf编译的问题

如何在 Xcode 编译中集成 .proto 文件?

无法构建模块“nanopb”

Nanopb - 解码失败:零标签