将c ++头文件转换为protobuf .proto文件

时间:2014-11-05 11:53:42

标签: c++ protocol-buffers

我想知道,有什么工具可以用来将.h文件转换成c ++的.proto文件吗? 我想要做的是:我有几个结构到.h文件中,我想序列化它们并通过protbuf发送它们。为此,我需要一个.proto文件来生成.pb.h和.pb.cc文件,然后我将能够序列化结构并发送它们。

有人知道是否有这样的工具吗?我可以手动完成,但我会花很多时间,因为头文件包含许多结构。

谢谢!

我正在编辑我的问题,让你知道我没有找到我要求的内容,但我发现这个https://code.google.com/p/protobuf-csharp-port/wiki/ProtoGen工具也非常有帮助。您将.proto文件作为参数提供,并生成c#代码。希望它有所帮助!

1 个答案:

答案 0 :(得分:1)

您可以编写一个脚本,该脚本使用libclang Python绑定可以很好地完成工作。

首先,使用CMake为您的项目生成一个compile_commands.json。解析完整的编译器命令行以获取您感兴趣的代码。

第二,将编译命令行从Python脚本传递到libclang,以解析包含所需标头的编译单元。

第三,迭代AST并提取您感兴趣的结构。

第四,从孤立的AST子树中生成protobuf。

这只是一个草图,但是我做了一些类似于递归地找到编译单元中包含的所有标头的事情。