无法找到加载文件OpenCVModules.cmake。

3

我第一次尝试使用CMake的find_package(OpenCV)功能,但无法成功。

OpenCVModules.cmake文件和OpenCVConfig.cmake文件在同一个文件夹中,但由于某些原因,CMake配置失败并显示以下错误信息。

我正在使用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文件中操作,使用的是随OpenCV一起提供的默认的"OpenCVConfig.cmake"文件,我没有进行修改。

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)

任何正确方向上的帮助都将不胜感激。谢谢。 更新1: 如果我通过硬编码路径修改第49行,它就可以工作!
include(D:/opencv/mybuild/OpenCVModules${OpenCV_MODULES_SUFFIX}.cmake)

由于某些原因,${CMAKE_CURRENT_LIST_DIR} 没有被适当地设置。 看起来像是动态变量。为什么没有按预期设置?

你自己写了OpenCVConfig.cmake吗?第49行是什么样子的,传递给include的变量有哪些? - Robert Prévost
@RobertPrévost,谢谢。我更新了我的问题以回答你的疑问。 - Arun
1个回答

2
OpenCV 2.4.9 中未正确支持 CMake 版本 2.8.3 之前的版本。特别地,这意味着在生成的 OpenCVConfig.cmake 中并未定义变量 CMAKE_CURRENT_LIST_DIR。这导致了指向 OpenCVModules.cmake 的路径被错误地形成。至少就 OpenCVConfig.cmake 中的这一行而言,在 2.4.11 版本之前并未添加对较旧版本 CMake 的兼容性(我通过查看 OpenCV 在 github 上的 ./cmake/templates/OpenCVConfig.cmake.in 来确认这一点)。
话虽如此,如果您可以选择使用哪个版本的 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接