我想使用 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文件,因此需要大量的技巧才能实现:
这感觉不正确。解决这种问题的正确方法是什么?