Короче говоря, я пытаюсь использовать 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
Я должен что-то здесь упустить, что я делаю не так?
Я думаю, что вам нужен атрибут «includes» в файле BUILD.systemssl для правильного пути включения для всего, что зависит от библиотеки.
Есть ли причина, по которой ваш глобус начинается с «**», потому что номер версии закодирован в пути к файлу? Вам также следует заглянуть в атрибут strip_prefix, который вы можете использовать для new_local_repository в вашем файле WORKSPACE, чтобы убрать это.
Других решений пока нет …