首页 > 解决方案 > 如何在编译过程中自动在 Visual Studio 中生成相应的 protobuf 文件?

问题描述

我在一个文件夹中有几条 protobuf 消息,我想将它们自动转换为相应的 header/cc 文件,然后在 Visual Studio 中继续编译过程。
到目前为止,我能想到的最佳解决方案是通过定义Pre-Build事件Propertise>Build Events>Pre-Build Event并将以下内容指定为命令:

$(SolutionDir)Dependencies\include\protobuf\bin\protoc.exe --proto_path=$(SolutionDir)Dependencies\include\messages\ --cpp_out=$(SolutionDir)Dependencies\include\messages\ message.proto message2.proto message3.proto

目前有关于此解决方案的 2 个问题:

  1. 我必须自己手动添加每个文件名。VS2019如何自动选择文件名?我尝试%filename%了宏,但无济于事,因为它似乎只返回项目文件名。

  2. 我还发现,每次更改消息时都不会生成这些文件。即使清理项目,也不会删除它们,所以我必须手动删除生成的文件并再次尝试重建项目!

除了求助于可以作为预构建事件调用的批处理文件之外,我怎样才能在 Visual Studio 中实现这一点而不这样做呢?

标签: c++visual-studio

解决方案


我建议你可以参考以下步骤:

1、修改.proto文件的属性:Item TypeCustom Build Tool

2、配置项目属性:Properties -> Custom Build Tools -> General

命令行$(SolutionDir)Dependencies\include\protobuf\bin\protoc.exe --proto_path= .\proto %(Filename).proto --cpp_out=$(ProjectDir)protocpp

说明protoc %(Filename).proto

输出$(ProjectDir)protocpp%(Filename).pb.cc

将输出添加到项目类型c/c++ complier

然后你可以尝试构建 .proto 文件。

注意:新添加的.proto文件也需要选择操作Custom Build Tool


推荐阅读