找不到加载文件OpenCVModules.cmake

时间:2016-09-28 01:05:11

标签: c++ visual-studio opencv cmake cmake-gui

我是第一次这样做但是无法使用CMake find_package(OpenCV)

OpenCVModules.cmake与OpenCVConfig.cmake位于同一文件夹中,但由于某些原因,CMake configure因此错误而失败。

我在Windows上使用Visual Studio Express 2010,CMake v2.8.0和OpenCV v2.4.9

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} )

OpenCVConfig.cmake的第49行看起来像这样

  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}未正确设置。 这看起来像动态变化的变量。为什么没有按预期设置?

1 个答案:

答案 0 :(得分:2)

OpenCV 2.4.9中没有对2.8.3之前版本的CMake的正确支持。特别是,这意味着CMAKE_CURRENT_LIST_DIR不是生成的OpenCVConfig.cmake中的已定义变量。这会导致OpenCVModules.cmake的路径不正确。至少对于OpenCVConfig.cmake中的违规行,在2.4.11之前没有添加旧版CMake的兼容性(我通过查看OpenCV's github上的./cmake/templates/OpenCVConfig.cmake.in进行了检查。)

话虽如此,如果您可以选择使用哪种版本的CMake和OpenCV,那么我建议使用最新版本的CMake(> = 2.8.12)和最新版本的OpenCV 2.4(2.4.13.1)或者OpenCV 3.1。