我有一个外部库 ace.so
.
cc_library(
name='ace',
hdrs=glob(['path/to/ace/**']),
srcs=['path/to/ace.so'],
)
如何使用bazel链接到该库?我知道a colon can be used直接调用gcc / g,但我不确定如何从bazel获得相同的行为 .
-
我尝试将
-l:ace.so
(也是-Wl,-l:ace.so
)添加到copts
,但似乎bazel没有将其传递给gcc或将其添加到用于链接器args的@
文件中 . -
我和
linkopts=['-l:ace.so']
一起尝试了nocopts='-lace.so'
. 没运气 . -
我也尝试了
cc_import
而不是cc_library
,但这也不起作用 .
我已经阅读了Importing precompiled C++ libraries doc,但我没有看到任何关于使用具有任意前缀的libs或没有前缀的内容 .
作为临时修复,我添加了指向 ace.so
的符号链接 libace.so
并更改了 srcs
行以匹配 . 虽然这有效,但我更倾向于说服bazel按原样使用lib .
1 回答
看看如何收集和传递有关库的信息,我担心这个(假设"plain"动态库以
lib
为前缀,libfoo.so
可以作为-lfoo
给出,目前相当硬编码 . 对它来说也是如此 . 被认为是"versioned"(匹配模式"^.+\\.so(\\.\\d+)+$"
)动态库,它将作为-l:foo.so.1
传递 . 但不幸的是,这并没有真正帮助你,因为你仍然需要采用类似的解决方法并创建一个版本化的小说来启动 . 说,只要给出你的solib文件名,符号链接听起来就像是一个相当理智的解决方法 .