bazel c ++ создать и связать с общей библиотекой - PullRequest
0 голосов
/ 28 ноября 2018

Я буду основывать свой вопрос на этапе 2 из учебника bazel для c ++ .

Обычно этот пример создает hello-world связаны статически с libhello-greet.a .Однако я хотел бы создать hello-world , связанный динамически с libhello-greet.so .

Поэтому я нашел какой-то обходной путьиспользуя этот 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",
    ],
)

, но это не самое лучшее решение.Есть ли лучший способ создать и связать библиотеку shared ?

1 Ответ

0 голосов
/ 28 ноября 2018

Если вы зададите флаг 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,
)
...