使用 bazel 构建库并将依赖项硬编码到其中
Building libraries with bazel and hardcoding dependencies into them
是否可以将依赖项硬编码到使用 bazel 构建的库中。原因是,如果我构建 somelib,我可以在工作区中使用它,但是一旦我将 lib 复制到其他地方,我就会丢失所有依赖项(bazel 缓存)。 当我想将库部署到系统或安装时出现问题。
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.
)
祝你好运!
是否可以将依赖项硬编码到使用 bazel 构建的库中。原因是,如果我构建 somelib,我可以在工作区中使用它,但是一旦我将 lib 复制到其他地方,我就会丢失所有依赖项(bazel 缓存)。 当我想将库部署到系统或安装时出现问题。
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.
)
祝你好运!