我是第一次这样做但是无法使用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}未正确设置。 这看起来像动态变化的变量。为什么没有按预期设置?
答案 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。