«Требуется OpenCV, но некоторые заголовки или библиотеки не найдены» с CLion, MinGW-64, CMake в Windows 10 - PullRequest
0 голосов
/ 09 сентября 2018

Я несколько дней пытался правильно настроить 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 ответа, но вот шаги:

  1. Установлено MinGW-64
    • Архитектура: x86_64, Темы: posix, Исключение: sjlj
  2. Установлено CMake 3.12.2 x64 msi
  3. В системных переменных установите / создайте следующее:
    • _CMAKE_HOME (C: \ Program Files (x86) \ CMake)
    • _MINGW_HOME (C: \ mingw \ mingw64)
  4. Затем добавьте следующее к переменной Path:
    • % _ CMAKE_HOME% \ Bin
    • % _ MINGW_HOME% \ Bin
  5. Скачать OpenCV 3.4.3 и извлечь в:
    • C: \ OpenCV \ OpenCV-3.4.3
  6. Используя 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
  7. Затем сгенерируйте (без тестов, документов, Python, WITH_IPP, WITH_MSMF) для:
    • C: _dev_sw \ OpenCV \ OpenCV-3.4.3 \ build_mingw
  8. Запустите mingw32-make, затем mingw32-make установите в C: _dev_sw \ opencv \ opencv-3.4.3 \ build_mingw
  9. В системных переменных установите / создайте следующее:
    • _OPENCV_HOME (C: \ opencv \ opencv-3.4.3 \ build_mingw \ install \ x64 \ mingw)
  10. Затем добавьте следующее к переменной Path:
    • % _ OPENCV_HOME% \ Bin
  11. Добавить FindOpenCV.cmake к:
    • C: \ Program Files \ JetBrains \ CLion 2018.2.2 \ bin \ cmake \ win \ share \ cmake-3.12 \ Modules
  12. Создание нового исполняемого проекта C ++ в CLion (ocv-test)
  13. Обновление файла MakeLists.txt (см. Выше)
  14. Перезагрузите 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. Но как этого избежать, поскольку он уже настроен в графическом интерфейсе?

...