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 的区别