将Google Protocol Buffers .proto文件集成到Visual C++ 2010中

Hhu*_*hut 13 c++ visual-studio-2010 protocol-buffers visual-c++

我已经为我的Visual Studio项目文件添加了一个自定义构建步骤,该文件从.proto输入文件生成google protobuf .h/.cc文件.但我一直想知道只有原型文件的内容发生了变化才能开始编译?

有没有办法从自定义构建步骤告诉VisualStudio?将proto文件集成到visual studio构建解决方案中的最佳方法是什么?

目前,在每次构建时都会更新.proto文件,然后还会更新输出.h/.cc文件的时间戳...然后会重新编译从中依赖的所有内容.有没有更好的方法,而仍然直接从视觉工作室构建它们?

wma*_*rak 15

请按照这些详细说明指定自定义生成工具.

考虑到您的proto文件与标准项目配置中的.h/.cpp文件一起存在,以下是要在自定义构建工具中插入的值:

Command Line: 
path\to\protoc --proto_path=$(ProjectDir) --cpp_out=$(ProjectDir) %(FullPath)
Outputs: 
$(ProjectDir)%(Filename).pb.h;$(ProjectDir)%(Filename).pb.cc
Run Code Online (Sandbox Code Playgroud)

请注意项元数据宏的使用,它替换了一些不推荐使用的宏(如$(InputDir)和$(InputName)).

现在,只有当输入文件(即%(FullPath))比"输出"更新时,才会运行Protocol Buffers编译器.


Jak*_* S. 3

也许有帮助。特别是看看 Igor Zavoychinskiy 的帖子:

这个棘手问题的解决方案实际上很简单:在输出部分中,您应该指定完整路径。这在任何地方都没有明确说明,但如果没有此检查器,就​​无法找到文件,因此假设它们不存在。例如,对于 protobuffers 编译输出部分将如下所示:

$(InputDir)\$(InputName).pb.cc;$(InputDir)\$(InputName).pb.h

和(也许?)kmote00:

...底线:我只需确保我的“Outputs”条目与(用户定义的)“OutputFile”属性中的默认值完全匹配。(值得庆幸的是,这也消除了两次构建的需要,这是我之前忍受的另一个烦恼。)