我想在我的一个基于bazel的c ++项目中链接一个外部静态库。我需要“whole-archive
”选项来链接库,如gcc或g ++ build:
g++ main.cc -Wl,--whole-archive -lhttp -Wl,--no-whole-archive
有人可以在bazel中建议“--whole-archive
”的替代词吗?
答案 0 :(得分:1)
可悲的是,alwayslink不能与预编译库一起使用,只能由Bazel编译和链接cc_library
。有一个未记录的黑客(我想我只是通过在这里提到它来记录它),并且它将.a文件重命名为.lo文件。然后Bazel将它作为整个档案链接。
请注意这是一个黑客攻击,并且会在没有警告的情况下停止工作。我们计划对此用例的cc_import
规则进行一些变更,以便将预编译的二进制文件导入工作区,并能够在其上设置整个归档。它还没有。
答案 1 :(得分:0)
https://bazel.build/versions/master/docs/be/c-cpp.html#cc_library.alwayslink
alwayslink
布尔;可选的;不可配置;默认值为0
如果为1,任何依赖于(直接或间接)此C ++的二进制文件 库将链接到列出的文件的所有目标文件中 srcs,即使某些不包含二进制引用的符号。这个 如果您的代码未被二进制代码显式调用,则非常有用, 例如,如果您的代码注册接收一些提供的回调 服务。