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

时间:2018-08-04 19:51:02

标签: c++ build bazel

今天第一次看Bazel。

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

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

2 个答案:

答案 0 :(得分:2)

共享库是cc_binary

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

(在非平凡的情况下,您可能还应该添加linkstatic = 1以获得一个自包含的DSO,该DSO本身对其源依赖项不具有加载时间依赖项。)

答案 1 :(得分:0)

为了执行动态链接,必须首先导入共享库。您应该指定库标头,库二进制文件和接口库(仅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"],
)