У CMake возникли проблемы при компиляции проекта, использующего OpenCV - PullRequest
0 голосов
/ 20 сентября 2019

Я на Linux Mint 19.1 Tessa.

Я следовал инструкциям, описанным здесь , чтобы установить OpenCV.Теперь он установлен в каталоге "/home/dell/opencv".

. Я попытался запустить пример проекта, расположенный по адресу" / home / dell / opencv / samples / cpp / example_cmake / ", запустивкоманда "cmake".на терминале, и я получил следующую ошибку:

CMake Error at CMakeLists.txt:14 (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.


-- Configuring incomplete, errors occurred!
See also "/home/dell/opencv/samples/cpp/example_cmake/CMakeFiles/CMakeOutput.log".

Файл "CMakeLists.txt" содержит следующее:

# cmake needs this line
cmake_minimum_required(VERSION 3.1)

# Enable C++11
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)

# Define project name
project(opencv_example_project)

# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)

# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")

# Declare the executable target built from your sources
add_executable(opencv_example example.cpp)

# Link your application with OpenCV libraries
target_link_libraries(opencv_example LINK_PRIVATE ${OpenCV_LIBS})

Я много искал в интернете, и кажется,быть общей проблемой.Однако мне все еще не удалось решить эту проблему, следуя найденным мною инструкциям.

Одна вещь, которую я замечаю, просматривая папку OpenCV, - это версия, которая у меня есть (которую я считаюсамый последний) действительно не содержит никакого файла OpenCVConfig.cmake, как вы можете видеть здесь .Тем не менее, самая старая версия OpenCV, которую я нашел на github, имеет этот файл, как вы можете видеть здесь .

Итак, может быть, какая-то конфигурация настроена на эту самую старую версию, и это вызывает конфликт?Как изменить это и заставить это работать для самой новой версии?Я думаю, что это должно быть что-то простое, но я новичок.

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Обновите путь к каталогу поиска OpenCV, как показано ниже,

find_package(OpenCV 3.4 REQUIRED PATHS "/usr/local/opencv/" NO_DEFAULT_PATH)
0 голосов
/ 20 сентября 2019

CMake пишет вам, что делать:

Добавьте префикс установки «OpenCV» в CMAKE_PREFIX_PATH или установите «OpenCV_DIR» в каталог, содержащий один из вышеуказанных файлов.

Другой вариант - пожалуйста, прочитайте комментарии в файле CMakeLists.txt, который вы вставили, еще раз.

Они говорят:

выможет потребоваться установить для переменной OpenCV_DIR абсолютный путь к каталогу, содержащему OpenCVConfig.cmake

Другая проблема - сборка в исходном коде, выполняемая с передачей точки в cmake.Лучше создать отдельный каталог для файлов сборки.

Сборка таким способом позволяет легко добавить каталог сборки в .gitignore и не загрязнять хранилище исходного кода скомпилированными двоичными файлами.Кроме того, если что-то пойдет не так, вы можете просто удалить этот каталог и начать заново с нуля.Это гораздо проще, чем возиться с файлами по одному.

Итак, вам нужно вызвать CMake, например:

mkdir build
cd build 
OpenCV_DIR=/home/dell/opencv cmake ..

или

mkdir build
cd build
cmake .. -DCMAKE_PREFIX_PATH=/home/dell/opencv

или следующее такжедолжен сделать трюк

mkdir build
cd build
cmake .. -DOpenCV_DIR=/home/dell/opencv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...