protobuf 和 Visual Studio 无缝集成 - 监控 proto 文件更改 [重复]

Posted

技术标签:

【中文标题】protobuf 和 Visual Studio 无缝集成 - 监控 proto 文件更改 [重复]【英文标题】:protobuf & visual studio seamless integration - monitor proto file changes [duplicate] 【发布时间】:2020-03-09 10:15:06 【问题描述】:

我正在将 protobuf 添加到我的 C++ 项目中(如果您询问,用于 JSON 反射)。 我希望 Visual Studio 2019 监听我的 protobuf 文件的更改,并在它们比生成的 c++ 反射更新时编译它们。我的问题是——

如何让 VS 监视我的 .proto 文件中的更改,就像它监视 C++ 文件中的更改一样。当被要求编译时,它会在编译前运行protoc

顺便说一句,为了将来参考,我找不到工作的 Nuget protobuf 包,它既有 protoc.exe 又有所属的标头,所以我需要使用 vcpkg。

【问题讨论】:

将生成添加为 protobuf 文件上的自定义构建步骤 你说得对,先生。 【参考方案1】:

在 C# 项目中,我们通过在 Visual Studio 中添加 Pre-build 事件来完成此操作。以下示例类似于我们的代码:

set FOLDER_PROTO=C:\Projecten\protobuf
set FOLDER_OUT=$(SolutionDir)\generated

mkdir %FOLDER_OUT%

for /f %%i in ('dir /s /b %FOLDER_PROTO%\msg\*.proto') do (
  protoc.exe -I=%FOLDER_PROTO% --cpp_out=%FOLDER_OUT% %%i
)

所以每次构建时都会生成所有文件。还有一个小缺陷,您必须手动将源文件添加到您的解决方案中。也许您可以在项目中使用命令或通配符来规避这种情况。

【讨论】:

这就是我所做的。问题是它不监视我的原型文件中的更改作为创建 cpp 文件的触发器。这导致每次对项目中的任何文件进行任何更改时都会创建 cpp,从而导致编译时间过长。【参考方案2】:

这个问题已经被问到并回答了here。 方法是添加自定义构建工具。见here how to do it。

【讨论】:

以上是关于protobuf 和 Visual Studio 无缝集成 - 监控 proto 文件更改 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 和visual studio code 的区别

visual studio 和visual studio code 的区别

visual studio 2015 和.net 啥区别

如何只用visual c++编译器而不安装visual studio

Visual Studio咋用哦?

2015版Visual Studio Code和Visual Studio Community的区别