Я создаю простое приложение C ++ на macOS с помощью Bazel. Я хочу использовать OpenCV в своем приложении. Я установил OpenCV с brew install opencv
и следовал Создание кода OpenCV с использованием Bazel для создания моей установки.
В моем файле WORKSPACE у меня есть:
new_local_repository(
name = "opencv",
path = "/usr/local/opt/opencv",
build_file = "opencv.BUILD",
)
В мой файл opencv.BUILD, у меня есть:
cc_library(
name = "opencv",
srcs = glob(["lib/*.dylib"]),
hdrs = glob(["include/opencv4/opencv2/**/*.h*"]),
includes = ["include/opencv4"],
visibility = ["//visibility:public"],
linkstatic = 1,
)
В моем файле BUILD у меня есть:
cc_library(
name = "lib",
srcs = ["hello.cpp"],
deps = [
"@opencv//:opencv",
],
)
Это работает до тех пор, пока цель opencv
принимает OpenCV .dlyb файлы (srcs = glob(["lib/*.dylib"])
).
Но теперь я хочу встроить библиотеки OpenCV статически в мой двоичный файл. Когда я изменяю цель opencv
на файлы .a OpenCV (srcs = glob(["lib/*.a"])
), я получаю кучу ошибок Undefined symbols
о классах AVFoundation. В моем коде я использую OpenCV Capture API (который, я полагаю, использует AVFoundation под капотом), так что это своего рода имеет смысл, но я не уверен, как это исправить.
Как мне настроить цели Bazel встроить OpenCV статически в мой бинарный файл?