使用bazel和硬编码依赖关系构建库

问题描述 投票:0回答:1

是否有可能将依赖项硬编码到使用bazel构建的库中。原因是,如果我构建somelib,我可以在工作区中使用它,但是只要我将lib复制到其他地方,我就会松开所有依赖项(bazel cache)。当我想将库部署到系统或安装时,Witch会产生问题。

some_folder
|
thirdparty
|_WORKSPACE
|_somelib
|    |_src
|         |_ a.c
|         |_ BUILD
|    |_include
|         |_a.h
|_include
   |_ b.h
gcc bazel dynamic-linking
1个回答
1
投票

听起来你想构建一个完全静态链接的库。这可以在Bazel中通过使用cc_binary构建库来完成,其中linkshared属性设置为True。根据documentation你还必须命名你的图书馆libfoo.so或类似。

这里启用静态库的是cc_binarylinkstatic属性行为。当True这是默认值时,所有可以静态链接到二进制文件的依赖项都将是。请注意,linkstaticcc_library上的行为不同,请参阅documentation

所以,基本上你在BUILD文件中想要这样的东西

cc_binary(
    name = "libfoo.so",
    srcs = [...],
    hdrs = [...],
    linkshared = 1,
    #linkstatic = 1 # This is the default, you don't need to add this.
)

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.