如何使用 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.proto
和 python nanopb_generator.py -T -v message.pb
。
谢谢!这有帮助!以上是关于如何使用 nanopb 编译 .proto + .options 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何解决导入object_detection / protos / image_resizer.proto但未使用protobuf编译的问题