Как использовать Bazel для создания сторонней библиотеки c ++, которая включает в себя openssl?

Короче говоря, я пытаюсь использовать Bazel для создания проекта на OSX, который зависит от uWebSockets. У меня проблема с тем, как добавить openssl в качестве зависимости, чтобы файлы в uWebSockets могли включать файлы из openssl, например так:

#include <openssl/opensslv.h>

Мой файл WORKSPACE в репозитории выглядит следующим образом (он ищет openssl, установленный через homebrew):

new_http_archive(
name = "uwebsockets",
urls = ["https://github.com/uNetworking/uWebSockets/archive/master.zip"],
build_file = "BUILD.uWebSockets",
)

new_local_repository(
name = "systemssl",
path = "/usr/local/opt/openssl",
build_file = "BUILD.systemssl",
)

BUILD.uWebSockets:

cc_library(
name = "uwebsockets-lib",
hdrs = glob(["**/src/*.h"]),
srcs = glob(["**/src/*.cpp"]),
visibility = ["//visibility:public"],
deps = [
"@systemssl//:openssl",
],
)

BUILD.systemssl:

cc_library(
name = "openssl",
hdrs = glob(["**/openssl/*.h"]),
srcs = glob([
"**/libssl.a",
"**/libcrypto.a",
]),
visibility = ["//visibility:public"],
)

Всякий раз, когда я пытаюсь запустить сборку, все собирается правильно, но я получаю:

external/uwebsockets/uWebSockets-master/src/Networking.h:7:10: fatal error: 'openssl/opensslv.h' file not found

Я должен что-то здесь упустить, что я делаю не так?

0

Решение

Я думаю, что вам нужен атрибут «includes» в файле BUILD.systemssl для правильного пути включения для всего, что зависит от библиотеки.

Есть ли причина, по которой ваш глобус начинается с «**», потому что номер версии закодирован в пути к файлу? Вам также следует заглянуть в атрибут strip_prefix, который вы можете использовать для new_local_repository в вашем файле WORKSPACE, чтобы убрать это.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector