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