簡體   English   中英

bazel-如何從構建目標文件打包特定文件(cc_library)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM