使用 Bazel C++ 教程;构建不创建/使用共享库?

Dav*_*eck 3 c++ build bazel

今天第一次看 Bazel。

在构建cpp 教程时,我可以看到它如何构建简单的可执行文件和存档库,但它看起来不像示例创建或使用共享库。

有谁知道简单的示例 BUILD 文件来演示此过程?谢谢。

Ker*_* SB 6

共享库是cc_binary

cc_binary(
    name = "libfoo.so",
    srcs = ["foo.cc"],
    linkshared = 1,     ## important
)
Run Code Online (Sandbox Code Playgroud)

(在重要的情况下,您可能还应该添加linkstatic = 1一个独立的 DSO,该 DSO 本身不具有对其源依赖项的加载时依赖项。)

  • 谢谢。将共享库分类为“cc_binary”,而将归档库分类为“cc_library”的理由是什么? (3认同)

小智 5

为了执行动态链接,必须首先导入共享库。您应该指定库标头、库二进制文件和接口库(仅 Windows 需要,本示例中不存在):

# Build the shared library
cc_binary(
    name = "libfoo.so",
    srcs = ["foo.cc"],
    linkshared = 1,     ## important
)

# Import the shared library
cc_import(
    name = "imported_libfoo",
    hdrs = ["foo.h"],
    shared_library = "libfoo.so",
)

# Link to the shared library
cc_binary(
    name = "bar",
    deps = [":imported_libfoo"],
)
Run Code Online (Sandbox Code Playgroud)