Используйте статическую сборку вместо общей сборки OpenCV в моем проекте CMake

Мой проект CMake использует OpenCV, однако он ссылается на общую сборку, для работы которой требуются библиотеки DLL OpenCV для моего исполняемого файла. Как я могу сказать CMake использовать вместо этого статическую сборку OpenCV?

Что мне следует изменить в файле CMakeList.txt? Вот как это выглядит прямо сейчас:

cmake_minimum_required(VERSION 2.8)
project (Tutorial)
find_package (OpenCV REQUIRED)
add_executable (Tutorial WIN32 main.cpp)
target_link_libraries (Tutorial ${OpenCV_LIBS})

person sashoalm    schedule 28.11.2014    source источник


Ответы (1)


Я нашел ответ из https://stackoverflow.com/a/26920527/492336:

На самом деле эта проблема, похоже, уже исправлена ​​в OpenCVConfig.cmake, который поставляется с OpenCV. Все, что вам нужно сделать, это определить OpenCV_STATIC в вашем CMakeLists.txt. т.е.

set(OpenCV_STATIC ON)
find_package(OpenCV REQUIRED)

Это сработало для меня, хотя мне нужно было указать, что CRT также должен быть статическим (поскольку статический OpenCV связан со статическим CRT).

person sashoalm    schedule 28.11.2014