在bazel中替换为“`--whole-archive`”

时间:2017-06-21 10:57:04

标签: c++ bazel

我想在我的一个基于bazel的c ++项目中链接一个外部静态库。我需要“whole-archive”选项来链接库,如gcc或g ++ build:

g++ main.cc -Wl,--whole-archive -lhttp -Wl,--no-whole-archive

有人可以在bazel中建议“--whole-archive”的替代词吗?

2 个答案:

答案 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,即使某些不包含二进制引用的符号。这个   如果您的代码未被二进制代码显式调用,则非常有用,   例如,如果您的代码注册接收一些提供的回调   服务。