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



我已将自定义构建步骤添加到我的Visual Studio项目文件中,该步骤从.proto输入文件生成google protobuf.h/.cc文件。但我一直在想,是否只有在原始文件的内容发生变化的情况下才能开始编译?

有没有一种方法可以将VisualStudio与自定义构建步骤区分开来?将原型文件集成到visual studio构建解决方案中的最佳方式是什么?

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

按照以下详细说明指定自定义构建工具。

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

Command Line: 
pathtoprotoc --proto_path=$(ProjectDir) --cpp_out=$(ProjectDir) %(FullPath)
Outputs: 
$(ProjectDir)%(Filename).pb.h;$(ProjectDir)%(Filename).pb.cc

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

现在,只有当输入文件(即%(FullPath))比"输出"新时,协议缓冲区编译器才会运行。

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

解决这个棘手问题其实很简单:在输出部分您应该指定完整路径。这在任何地方都没有明确说明但是如果没有该检查器,假设它们不存在。例如protobuffers编译输出部分如下所示:

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

和(也许?)kmote00:

一句话:我只需要确保我的"输出"条目准确无误与(用户定义的)"OutputFile"属性中的默认值匹配。(值得庆幸的是,这也消除了两次通过构建的必要性是我之前忍受的另一个烦恼。)

最新更新