我有三个存储库,(重新)使用一组 protobuf 文件:
repo1
+ hello.proto
+ goodbye.proto
repo2
+ hello.proto
+ goodbye.proto
repo3
+ hello.proto
+ goodbye.proto
.proto
定义仅在repo1中演变。我应该如何重用这些定义?我很难以正确(或建议)的方式找到资源,我的选择似乎是:
protoc
编译的)C++代码作为包分发(比如vcpkg包)proto
文件本身作为包分发,或者将它们创建一个存储库并将其作为子存储库添加到我的项目中我倾向于选项 1,但不知道
protoc
是否能保证在 Linux 和 Windows 上生成相同的代码 - 是否会产生任何不需要的副作用。重用原型文件似乎更安全,但将它们合并到其他存储库的构建系统中需要更多的工作和维护。
protoc 实用程序保证生成仅适合其构建的工具链和 libprotobuf 版本的代码。生成的代码与运行时的版本有关。如果您使用 v.3.12 库运行 protoc,则将无法在 v.3.13 中使用它。它是可移植的有线格式,编译单元。
常见的做法是使用包含“public”.proto 文件的文件夹作为子存储库(子模块)。