Я несколько дней пытался правильно настроить OpenCV с CLion без особого успеха, поэтому спрашиваю об этом.
Вот как выглядит мой CMakeLists:
cmake_minimum_required(VERSION 3.12)
project(ocv_test)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
find_package(OpenCV REQUIRED)
set(SOURCE_FILES main.cpp)
add_executable(ocv_test ${SOURCE_FILES})
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(ocv_test ${OpenCV_LIBS})
Вот ошибка, которую я получаю:
"C:\Program Files\JetBrains\CLion 2018.2.2\bin\cmake\win\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" C:\Users\Owner\CLionProjects\ocv-test
Could not find OpenCV_CORE_INCLUDE_DIR
Could not find OpenCV_HIGHGUI_INCLUDE_DIR
Include dir: OFF
CMake Error at C:/Program Files/JetBrains/CLion 2018.2.2/bin/cmake/win/share/cmake-3.12/Modules/FindOpenCV.cmake:220 (MESSAGE):
OpenCV required but some headers or libs not found. Please specify it's
location with OpenCV_ROOT_DIR env. variable.
Call Stack (most recent call first):
CMakeLists.txt:6 (find_package)
-- Configuring incomplete, errors occurred!
See also "C:/Users/Owner/CLionProjects/ocv-test/cmake-build-debug/CMakeFiles/CMakeOutput.log".
Я прежде всего следовал этим шагам из другого SO ответа, но вот шаги:
- Установлено MinGW-64
- Архитектура: x86_64, Темы: posix, Исключение: sjlj
- Установлено CMake 3.12.2 x64 msi
- В системных переменных установите / создайте следующее:
- _CMAKE_HOME (C: \ Program Files (x86) \ CMake)
- _MINGW_HOME (C: \ mingw \ mingw64)
- Затем добавьте следующее к переменной Path:
- % _ CMAKE_HOME% \ Bin
- % _ MINGW_HOME% \ Bin
- Скачать OpenCV 3.4.3 и извлечь в:
- C: \ OpenCV \ OpenCV-3.4.3
- Используя CMake, настройте w / MinGW Makefiles и укажите собственные компиляторы:
- C: C: /mingw/mingw64/bin/x86_64-w64-mingw32-gcc.exe
- C ++: C: / mingw / mingw64 / bin / x86_64-w64-mingw32-g ++. Exe
- Затем сгенерируйте (без тестов, документов, Python, WITH_IPP, WITH_MSMF) для:
- C: _dev_sw \ OpenCV \ OpenCV-3.4.3 \ build_mingw
- Запустите mingw32-make, затем mingw32-make установите в C: _dev_sw \ opencv \ opencv-3.4.3 \ build_mingw
- В системных переменных установите / создайте следующее:
- _OPENCV_HOME (C: \ opencv \ opencv-3.4.3 \ build_mingw \ install \ x64 \ mingw)
- Затем добавьте следующее к переменной Path:
- Добавить FindOpenCV.cmake к:
- C: \ Program Files \ JetBrains \ CLion 2018.2.2 \ bin \ cmake \ win \ share \ cmake-3.12 \ Modules
- Создание нового исполняемого проекта C ++ в CLion (ocv-test)
- Обновление файла MakeLists.txt (см. Выше)
- Перезагрузите MakeLists.txt и получите ошибки, показанные выше
Я пытался обновить CMakeLists, как показано ниже, но все равно те же ошибки:
cmake_minimum_required(VERSION 3.12)
project(ocv_test)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# Where to find CMake modules and OpenCV
set(OpenCV_DIR "C:\\opencv\\opencv-3.4.3\\build_mingw\\install")
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(ocv_test main.cpp)
# add libs you need
set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_imgcodecs)
# linking
target_link_libraries(ocv_test ${OpenCV_LIBS})
В отличие от этого ТАКОГО ответа, я не вижу имени OpenCV_DIR в моей сборке CMake. Кроме того, я попытался обновить _OPENCV_HOME до OpenCV_ROOT_DIR (как говорит ошибка), но это тоже не сработало.
Что-нибудь кажется выключенным?
===
Редактировать 1:
Проблема была в FindOpenCV (пропустите шаг 11). Установка переменной OPENCV_DIR в CMakeLists исправила ошибки и скомпилировалась успешно (Спасибо, Цыварев!).
Я не уверен, что установка OPENCV_DIR в CMakeLists будет проблемой, если проект будет запущен на другом ПК и / или ОС, поэтому я добавил запись OPENCV_DIR (указывающую на каталог / install) в CMake GUI, повторные шаги 6- 8, создал новый, но похожий проект CLion и получил следующую ошибку:
CMake Error at CMakeLists.txt:10 (find_package):
By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "OpenCV", but
CMake did not find one.
Could not find a package configuration file provided by "OpenCV" with any
of the following names:
OpenCVConfig.cmake
opencv-config.cmake
Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set
"OpenCV_DIR" to a directory containing one of the above files. If "OpenCV"
provides a separate development package or SDK, be sure it has been
installed.
Опять же, это исправлено, если я установил переменную OPENCV_DIR. Но как этого избежать, поскольку он уже настроен в графическом интерфейсе?