如何避免c ++库依赖于protobuf库的重复定义?

时间:2018-08-24 19:08:11

标签: tensorflow bazel

我们有一个cc_library依赖于our own protostensorflow protos

在查看构建dep时,我们注意到它引入了protobuf的两个定义。

% bazel query "deps(//cc/google/fhir/seqex:resource_to_example)" &> resource_to_example_deps
% cat resource_to_example_deps | grep wire
@com_google_protobuf//:src/google/protobuf/wire_format.cc
@com_google_protobuf//:src/google/protobuf/wire_format_lite_inl.h
@com_google_protobuf//:src/google/protobuf/wire_format_lite.h
@com_google_protobuf//:src/google/protobuf/wire_format_lite.cc
@com_google_protobuf//:src/google/protobuf/wire_format.h
@protobuf_archive//:src/google/protobuf/wire_format.cc
@protobuf_archive//:src/google/protobuf/wire_format_lite_inl.h
@protobuf_archive//:src/google/protobuf/wire_format_lite.h
@protobuf_archive//:src/google/protobuf/wire_format_lite.cc
@protobuf_archive//:src/google/protobuf/wire_format.h

事实证明,上述原因是:

  1. tensorflow workspace被引入@protobuf_archieve和@com_google_protobuf
  2. tensorflow正在使用@protobuf_archieve for proto_gen
  3. 我们自己的cc_proto_library取决于@ com_google_protobuf /,并且榛子cc_proto_library的默认协议也使用“ @com_google_protobuf //:protoc”。

就目前而言,我可以通过更改(iii)以使用@protobuf_archieve来避免这种情况,但是我想知道是否有更好的方法来处理此问题:例如,如果同一个库需要依赖其他项目中的proto,该怎么办?使用不同的协议。

谢谢!

0 个答案:

没有答案