2016-09-28 2 views
3

Я делаю это в первый раз, но не мог начать работать с CMake find_package (OpenCV)не может найти файл загрузки OpenCVModules.cmake

OpenCVModules.cmake находится в той же папке, что и OpenCVConfig.cmake, но и для по каким-то причинам CMake configure не работает с этой ошибкой.

Я на Windows, с помощью Visual Studio Express 2010, CMake v2.8.0 и v2.4.9 OpenCV

CMake Error at D:/opencv/mybuild/install/x86/vc10/lib/OpenCVConfig.cmake:49 (include): 
    include could not find load file: 

    /OpenCVModules.cmake 
Call Stack (most recent call first): 
    CMakeLists.txt:19 (FIND_PACKAGE) 

Я, чтобы получить это происходит с VS 2010 Express, но мне позволено выбрать любой совместимой версии CMake и OpenCV для этого проекта.

Я делаю это в CMakeLists.txt, а «OpenCVConfig.cmake» является стандартным, который поставляется с OpenCV. Я не изменил его.

SET(OpenCV_DIR "D:/opencv/mybuild") 
# this project requires OpenCV, so find it 
FIND_PACKAGE(OpenCV) 
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS}) 

Line # 49 из OpenCVConfig.cmake выглядит следующим образом

include(${CMAKE_CURRENT_LIST_DIR}/OpenCVModules${OpenCV_MODULES_SUFFIX}.cmake) 

Любая помощь в правильном направлении очень ценится. Благодарю.

UPDATE1: Если я изменю строку # 49 путем жесткого кодирования пути, он работает!

include(D:/opencv/mybuild/OpenCVModules${OpenCV_MODULES_SUFFIX}.cmake) 

По некоторым причинам $ {CMAKE_CURRENT_LIST_DIR} не получает соответствующее значение. Это выглядит как динамически измененная переменная. Почему это не установлено, как ожидалось?

+0

Вы пишите OpenCVConfig.cmake самостоятельно? Как выглядит строка 49 и какие переменные передаются для включения? –

+0

@ RobertPrévost, спасибо. Я обновил свой вопрос, чтобы ответить на ваши вопросы. – Arun

ответ

2

Правильная поддержка версий CMake до 2.8.3 отсутствовала в OpenCV 2.4.9. В частности, это означает, что CMAKE_CURRENT_LIST_DIR не является определенной переменной в сгенерированном OpenCVConfig.cmake. Это приводит к неправильному формированию пути к OpenCVModules.cmake. По крайней мере, в отношении этой линии нарушения в OpenCVConfig.cmake совместимость для более старых версий CMake не была добавлена ​​до версии 2.4.11 (я проверил это, посмотрев на ./cmake/templates/OpenCVConfig.cmake.in на OpenCV's github).

Если вы можете выбрать, какие версии CMake и OpenCV использовать, то я бы предложил использовать последнюю версию CMake (> = 2,8.12) и последнюю версию OpenCV 2.4 (2.4.13.1) или OpenCV 3.1.

+1

вы спасли мой день! CMake 2.8.12 и OpenCV 2.4 (2.4.13.1) комбо работает как шарм. Спасибо! – Arun