Не удается скомпилировать программу на С++ с помощью OpenCV. Файл OpenCVConfig.cmake отсутствует

Пробовал запускать мою простую программу cpp из CLion, а также из терминала, но везде одна и та же проблема:

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 устанавливается в каталог пользователя на macOS. Может ли кто-нибудь помочь мне?

Как именно вы установили OpenCV?

Mark Setchell 13.02.2019 17:39

@MarkSetchell через терминал... используя homebrew, python3 и установку виртуальной среды и cmake

Alina Dyussupova 13.02.2019 18:41

Какова ваша команда cmake? Сообщение об ошибке сообщает вам, что вам нужно добавить префикс установки OpenCV в CMAKE_PREFIX_PATH. Это означает, что ваша команда cmake должна содержать -DCMAKE_PREFIX_PATH=<path to opencv>.

Richard 13.02.2019 18:45

Вы можете найти файл, на который ссылается @Richard, вот так find /usr /Users -iname "OpenCVConfig.cmake" 2> /dev/null

Mark Setchell 13.02.2019 18:49
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
4
513
3

Ответы 3

У меня была аналогичная проблема с CLion в Windows, когда я пытался запустить программу, которую написал, в другой системе. Чтобы решить проблему, мне пришлось «Импортировать проект из исходников», чтобы CLion сгенерировал все необходимые файлы для Make.

Я импортировал существующую программу через диалоговое окно, которое появилось после того, как я импортировал.

CLion Start-up Window

Это была моя простая терминальная программа GCD C++ до того, как я импортировал репозиторий так, как требовал от меня CLion:

GCD Project Files

После того, как я выбрал импорт, CLion сгенерировал все файлы, необходимые для локальной компиляции:

My new project file architecture

Я надеюсь, что это поможет, как только я импортировал свою программу, CLion сделал все остальное. Я изменил свой файл CMakeList.txt для С++ 11, потому что мне нужно знать, что мои программы компилируются, как и ожидалось, на 11. CLion по умолчанию использует С++ 14 для моего.

В сообщении об ошибке четко указано, что делать, чтобы решить эту проблему: во-первых, найдите, где в вашей системе находится один из упомянутых файлов (OpenCVConfig.cmake или opencv-config.cmake). Этот путь будет /path/to/configfile. Затем установите переменную OpenCV_DIR соответствующим образом.

Задать переменную можно двумя способами:

  • командная строка: cmake -DOpenCV_DIR=</path/to/configfile> <any additional arguments>
  • Настройки CLion: см. изображения ниже (взято из предыдущий пост). Но вместо -DENABLE_TESTS=ON добавьте -DOpenCV_DIR=</path/to/configfile> в параметры CMake:

Как говорится в сообщении об ошибке:

  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.

Итак, найдите файл OpenCVConfig.cmake и в своем файле CMakeLists.txt установите переменную OpenCV_DIR в каталог, содержащий файл OpenCVConfig.cmake.

В моем случае я установил opencv из исходного кода. Каталог, в котором я установил opencv, имел следующую структуру

opencv-installation-directory/
  - bin/
  - include/
  - lib/
  - share/
    - OpenCV/
      - OpenCVConfig.cmake

Поэтому я добавил следующую строку в CMakeLists.txt:

set(OpenCV_DIR opencv-installation-directory/share/OpenCV)

Другие вопросы по теме