Я хочу использовать библиотеку OpenCV во встроенной системе, и мне нужно скомпилировать свой проект, используя OpenCV в качестве статической библиотеки.
Как я могу создать библиотеку, используя параметры cmake?
Я хочу использовать библиотеку OpenCV во встроенной системе, и мне нужно скомпилировать свой проект, используя OpenCV в качестве статической библиотеки.
Как я могу создать библиотеку, используя параметры cmake?
Чтобы собрать OpenCV как статическую библиотеку, вам нужно установить флаг BUILD_SHARED_LIBS
в false/off:
cmake -DBUILD_SHARED_LIBS=OFF ..
Но я думаю, что этого недостаточно для вашей задачи, потому что вам действительно нужно кросс-компилировать библиотеку для вашей архитектуры. В случае Android или IOS такой порт уже существует, и вы можете просто использовать его. В случае другой платформы вам нужно создать свой собственный файл цепочки инструментов cmake для кросс-компиляции и, возможно, внести ряд исправлений в систему сборки OpenCV.
-DCMAKE_CXX_COMPILER=i586-mingw32msvc-g++
? Я вижу преимущества CMake перед автоинструментами, но что такое CMake, эквивалентный ./configure --help
?
- person Tomasz Gandor; 14.01.2015
ccmake .
== ./configure --help
- person wener; 07.03.2017
-DBUILD_SHARED_LIBS=OFF
тоже создает динамические файлы?
- person Francesco Boi; 18.09.2018
// Build shared libraries (.dll/.so) instead of static ones (.lib/.a) BUILD_SHARED_LIBS:BOOL=ON
- person Picard; 11.11.2019
BUILD_SHARED_LIBS
только превращает собственные библиотеки OpenCV в статические, но ничего не делает с его (транзитивными) зависимостями, такими как GStreamer. Вам нужно будет создать статические библиотеки всех зависимостей и каким-то образом убедиться, что система сборки OpenCV использует их... это может быть нетривиально.
- person Thomas; 09.01.2020