是否有可能将依赖项硬编码到使用bazel构建的库中。原因是,如果我构建somelib,我可以在工作区中使用它,但是只要我将lib复制到其他地方,我就会松开所有依赖项(bazel cache)。当我想将库部署到系统或安装时,Witch会产生问题。
some_folder
|
thirdparty
|_WORKSPACE
|_somelib
| |_src
| |_ a.c
| |_ BUILD
| |_include
| |_a.h
|_include
|_ b.h
听起来你想构建一个完全静态链接的库。这可以在Bazel中通过使用cc_binary
构建库来完成,其中linkshared
属性设置为True
。根据documentation你还必须命名你的图书馆libfoo.so
或类似。
这里启用静态库的是cc_binary
的linkstatic
属性行为。当True
这是默认值时,所有可以静态链接到二进制文件的依赖项都将是。请注意,linkstatic
在cc_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.
)
祝好运!