Bazel使用soname创建C ++共享库

时间:2018-11-28 08:11:01

标签: c++ shared-libraries bazel

我想使用 soname 与Bazel创建共享 c ++库。

使用cmake,我可以设置以下属性:

set_target_properties(my-library
        PROPERTIES
                SOVERSION 3
                VERSION 3.2.0
        )

然后会生成

libmy-library.so -> libmy-library.so.3
libmy-library.so.3 -> libmy-library.so.3.2.0
libmy-library.so.3.2.0

但是,在bazel文档中,我找不到任何可以轻松实现的功能。我知道我可以直接定义soname和版本,并在构建文件中传递一些linkopts

cc_binary(
    name = "libmy-library.so.3.2.0",
    srcs = ["my-library.cpp", "my-library.h"],
    linkshared = 1,
    linkopts = ["-Wl,-soname,libmy-library.so.3"],
)

确实会生成具有正确的soname的 libmy-library.so.3.2.0 ,但不会生成.so文件,因此需要大量的技巧才能实现:

  • 创建libmy-library.so.3符号链接
  • 创建libmy-library.so符号链接
  • 创建一些导入规则,以便我可以构建与此库链接的二进制文件。

这感觉不正确。解决这种问题的正确方法是什么?

0 个答案:

没有答案