我的问题将基于bazel tutorial for c++的第二阶段。
通常,此示例将创建与 libhello-greet.a 静态链接的 hello-world 。但是,我想创建与 libhello-greet.so 动态链接动态的 hello-world 。
因此,我使用此 BUILD 文件找到了一种解决方法:
cc_binary(
name = "libhello-greet.so",
srcs = ["hello-greet.cc", "hello-greet.h"],
linkshared = 1,
)
cc_import(
name = "libhello-greet",
shared_library = "libhello-greet.so",
hdrs = ["hello-greet.h"],
)
cc_binary(
name = "hello-world",
srcs = ["hello-world.cc"],
deps = [
":libhello-greet",
],
)
但这并不是最好的解决方案。有没有更好的方法来创建共享库并与之链接?
答案 0 :(得分:1)
如果您在二进制文件中指定了linkstatic
标志,它将以静态或共享库的形式链接所有库。但是我不知道如何仅将某些库链接为共享库。
cc_library(
name = "hello-greet",
srcs = ["hello_greet.cc"],
hdrs = ["hello_greet.h"],
)
cc_binary(
name = "hello-world",
srcs = ["main.cc"],
deps = [
":hello-greet",
],
linkstatic=False,
)