cmake не смог найти файл конфигурации пакета, предоставленный "OPENCV" - PullRequest
0 голосов
/ 02 апреля 2020

Я собрал OpenCV v4.2 из исходного кода и установил его на /usr/local. Файл OPENCVConfig.cmake находится в каталоге /usr/local/lib/cmake/opencv4:

paul@paul-desktop:/usr/local/lib/cmake/opencv4$ dir
OpenCVConfig.cmake  OpenCVConfig-version.cmake  OpenCVModules.cmake  OpenCVModules-release.cmake

Вот мой файл CMakeLists.txt с отчаянными попытками удовлетворить find_package:

cmake_minimum_required(VERSION 3.16.2)
project(af VERSION 0.1.0 LANGUAGES CXX)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_BUILD_PARALLEL_LEVEL 4)
set(CMAKE_PREFIX_PATH /usr/local/lib/cmake/opencv4)
set(ENV{OPENCV_DIR} /usr/local/lib/cmake/opencv4)
set(OPENCV_DIR /usr/local/lib/cmake/opencv4)

find_package(OPENCV REQUIRED)

add_executable(af main.cpp)

, который приводит к этой ошибке:

[build] CMake Error at CMakeLists.txt:12 (find_package):
[build]   By not providing "FindOPENCV.cmake" in CMAKE_MODULE_PATH this project has
[build]   asked CMake to find a package configuration file provided by "OPENCV", but
[build]   CMake did not find one.
[build] 
[build]   Could not find a package configuration file provided by "OPENCV" with any
[build]   of the following names:
[build] 
[build]     OPENCVConfig.cmake
[build]     opencv-config.cmake
[build] 
[build]   Add the installation prefix of "OPENCV" to CMAKE_PREFIX_PATH or set
[build]   "OPENCV_DIR" to a directory containing one of the above files.  If "OPENCV"
[build]   provides a separate development package or SDK, be sure it has been
[build]   installed.

Когда я открываю CMakeCache.txt с помощью cmake-gui и вручную устанавливаю OPENCV_DIR на /usr/local/lib/cmake/opencv4, я получаю ту же ошибку, и OPENCV_DIR становится OPENCV_DIR-NOTFOUND.

Что здесь происходит? Мне кажется, что я выполняю требования, перечисленные в сообщении об ошибке, и любой полезный совет, который я мог бы найти в ответах на подобные проблемы.

Я не уверен, имеет ли это значение, но там /usr/share/OpenCV/OpenCVConfig.cmake принадлежит другая версия OpenCV.

1 Ответ

1 голос
/ 02 апреля 2020

Имена пакетов чувствительны к регистру . И собственное имя пакета OpenCV для использования в find_package - OpenCV, а не OPENCV.


На самом деле, единственное, что в CMake не учитывает регистр имя макроса / функции. Все остальное с учетом регистра .

Некоторые переменные и файлы используют прописные буквы или строчные буквы преобразования имен. Например, переменная OPENCV_DIR использует имя пакета в в верхнем регистре , а файл opencv-config.cmake использует имя пакета в в нижнем регистре . Но это не отрицает чувствительность к регистру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...