在跨 3 个存储库的 C++ 项目中使用 protobuf

问题描述 投票:0回答:1

我有三个存储库,(重新)使用一组 protobuf 文件:

repo1
 + hello.proto
 + goodbye.proto

repo2
 + hello.proto
 + goodbye.proto

repo3
 + hello.proto
 + goodbye.proto

.proto
定义仅在repo1中演变。我应该如何重用这些定义?我很难以正确(或建议)的方式找到资源,我的选择似乎是:

  1. 将生成的(
    protoc
    编译的)C++代码作为包分发(比如vcpkg包)
  2. proto
    文件本身作为包分发,或者将它们创建一个存储库并将其作为子存储库添加到我的项目中

我倾向于选项 1,但不知道

protoc
是否能保证在 Linux 和 Windows 上生成相同的代码 - 是否会产生任何不需要的副作用。重用原型文件似乎更安全,但将它们合并到其他存储库的构建系统中需要更多的工作和维护。

c++ protocol-buffers grpc
1个回答
0
投票

protoc 实用程序保证生成仅适合其构建的工具链和 libprotobuf 版本的代码。生成的代码与运行时的版本有关。如果您使用 v.3.12 库运行 protoc,则将无法在 v.3.13 中使用它。它是可移植的有线格式,编译单元。

常见的做法是使用包含“public”.proto 文件的文件夹作为子存储库(子模块)。

© www.soinside.com 2019 - 2024. All rights reserved.