[英]bazel - how do I package a specific file from a build target files (cc_library)
我是bazel的新手,有一个问题:
我已经定义了一个库xxx,如下所示:
cc_library(
name = "xxx",
srcs = glob(["lib/*.c"]),
hdrs = glob(["include/*.h"]),
copts = ["-Iinclude -Werror"],
)
使用pkg_tar,我看到它生成了一个目标文件:xxx,其中包含.so和.a:
load("@bazel_tools//tools/build_defs/pkg:pkg.bzl", "pkg_tar")
pkg_tar(
name = "libxxx",
package_dir = "/usr/lib/",
srcs = [":xxx"],
mode = "0644",
)
我只想获取静态库.a,我该怎么做,目前,我只找到了以下解决方案:
pkg_tar(
name = "libxxx-static",
package_dir = "/usr/lib/",
srcs = [":xxx"],
# FIXME
strip_prefix = "libxxx.so",
mode = "0644",
)
如何仅在目标文件中获得一个文件?
您可以使用cc_library()的linkstatic
字段,
如果在cc_library()规则上使用linkstatic属性,则其含义将有所不同。 对于C ++库,linkstatic = True表示仅允许静态链接,因此不会生成.so。 linkstatic = False不会阻止创建静态库。 该属性用于控制动态库的创建。
像这样:
cc_library(
name = "xxx",
srcs = glob(["lib/*.c"]),
hdrs = glob(["include/*.h"]),
copts = ["-Iinclude -Werror"],
linkstatic = True,
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.