找不到模块FindOpenCV.cmake(配置过程中出错)
我为C++中的一个项目编写了找不到模块FindOpenCV.cmake(配置过程中出错),opencv,cmake,Opencv,Cmake,我为C++中的一个项目编写了CMakeLists.txt,该项目使用OpenCV库。当我尝试使用cmake创建项目时,我遇到了下一个配置问题: CMake Error at CMakeLists.txt:15 (find_package): Could not find module FindOpenCV.cmake or a configuration file for package OpenCV. Adjust CMAKE_MODULE_PATH to find FindOp
CMakeLists.txt
,该项目使用OpenCV库。当我尝试使用cmake创建项目时,我遇到了下一个配置问题:
CMake Error at CMakeLists.txt:15 (find_package):
Could not find module FindOpenCV.cmake or a configuration file for package
OpenCV.
Adjust CMAKE_MODULE_PATH to find FindOpenCV.cmake or set OpenCV_DIR to the
directory containing a CMake configuration file for OpenCV. The file will
have one of the following names:
OpenCVConfig.cmake
opencv-config.cmake
事实上,我在VisualStudio中使用的路径有一个环境变量,没有任何问题。如果我不包括OpenCV,那么我可以毫无问题地进行配置和生成,但我需要解决这个问题。我不明白为什么cmake找不到OpenCV路径或者如何修复它
我还使用了此链接中提到的建议:
有人也有这个问题吗?您看到的错误是CMake找不到FindOpenCV.CMake文件,因为CMake没有现成的文件。因此,您需要找到一个并将其放在cmake可以找到的位置: 你可以找到一份工作。如果你喜欢冒险,你也可以自己写 然后将其添加到项目中的某个位置,并调整CMAKE_模块_路径,以便CMAKE可以找到它 e、 如果你有
CMakeLists.txt
cmake-modules/FindOpenCV.cmake
那么你应该做一个测试
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake-modules)
在执行查找包(OpenCV)之前,在您的CMakeLists.txt文件中,我遇到了完全相同的问题。我通过在我的
FindOpenCV.cmake
文件中添加以下行来修复它。将其放在代码其余部分之前顶部的任何位置
set (OpenCV_DIR /home/cmake/opencv/compiled) #change the path to match your complied directory of opencv
基本上,您告诉
FindOpenCV.cmake
在哪里可以找到opencv文件,假设其他编译可以找到FindOpenCV.cmake
如果您在Linux上,您只需要用opencv的路径(包含OpenCVConfig.cmake文件)填充opencv_DIR变量
导出OpenCV\u目录=
在我的Fedora机器上,当我键入“make”时,我收到一个错误,说它找不到“cv.h”。我通过修改我的“OpenCVConfig.cmake”文件修复了这个问题
之前:
集合(OpenCV_INCLUDE_DIRS“${OpenCV_INSTALL_PATH}/INCLUDE/OpenCV;${OpenCV_INSTALL_PATH}/INCLUDE”)
SET(OpenCV_LIB_DIR“${OpenCV_INSTALL_PATH}/lib64”)
之后:
集合(OpenCV\u INCLUDE\u DIRS)/usr/INCLUDE/OpenCV;/usr/INCLUDE/opencv2)
SET(OpenCV_LIB_DIR)/usr/lib64“紧跟着@hugh pearse和@leszek hanusz的答案,稍加调整。我从Ubuntu12.10存储库(libopencv-)安装了opencv*,遇到了同样的问题。无法使用导出OpenCV\u DIR=/usr/share/OpenCV/解决此问题(因为我的OpenCVConfig.cmake在那里)。当我还更改了OpenCVConfig.cmake文件中的一些行时,问题就解决了:
# ======================================================
# Include directories to add to the user project:
# ======================================================
# Provide the include directories to the caller
#SET(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}/include/opencv;${OpenCV_INSTALL_PATH}/include")
SET(OpenCV_INCLUDE_DIRS "/usr/include/opencv;/usr/include/opencv2")
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
# ======================================================
# Link directories to add to the user project:
# ======================================================
# Provide the libs directory anyway, it may be needed in some cases.
#SET(OpenCV_LIB_DIR "${OpenCV_INSTALL_PATH}/lib")
SET(OpenCV_LIB_DIR "/usr/lib")
LINK_DIRECTORIES(${OpenCV_LIB_DIR})
这在我的Ubuntu 12.10上起了作用。记住在CMakeLists.txt中添加
target\u link\u库(yourprojectname${OpenCV\u LIBS})
另一种可能性是指出可以在CMakeLists.txt文件中找到OpenCV_DIR
。例如,以下cmake脚本适用于我:
cmake_minimum_required(VERSION 2.8)
project(performance_test)
set(OpenCV_STATIC ON)
set(OpenCV_CUDA OFF)
set(OpenCV_DIR "${CMAKE_SOURCE_DIR}/../install")
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIB_DIR})
file(GLOB my_source_files ./src/*)
add_executable( performance_test ${my_source_files})
target_link_libraries(performance_test ${OpenCV_LIBS})
只是提醒一下,在调用OpenCVConfig.cmake
之前,还应该设置OpenCV\u STATIC
和OpenCV\u CUDA
。在我的例子中,构建的库是不使用CUDA的静态库
非原始cv.h如果您在windows上,您可以自己将opencv路径添加到opencv_DIR。 (OpenCV_DIR位于红色区域) 路径类似于“D:/opencv244/build” 您可以在路径下找到文件“OpenCVConfig.cmake”。find/-name“OpenCVConfig.cmake”
导出OpenCV_DIR=/path/found/over我正在使用Windows并收到相同的错误消息。我发现另一个相关的问题。
我在行尾的路径中定义了OpenCV_DIR。但是,当我在命令行中键入“path”时,我的OpenCV_DIR没有显示出来。我发现,因为Windows可能对路径的长度有限制,它将我的OpenCV\u目录剪切为我定义的内容的一部分。所以我删除了路径的其他部分,现在它可以工作了 我也面临同样的错误。在我的例子中,这个“OpenCVConfig.cmake”文件位于/usr/local/share/OpenCV中。在CMakeLists.txt中添加行
set(OpenCV\u DIR/usr/local/share/OpenCV)
如错误消息所示。我也有同样的错误,我使用windows。我将“C:\opencv\build”(opencv文件夹)添加到控制面板的路径中。
所以,没关系 在c驱动器(windows)中安装库时。CMakeLists.txt应该如下所示:
cmake_minimum_required(VERSION 3.0.0)
project(test_opencv VERSION 0.1.0)
include(CTest)
enable_testing()
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(test_opencv main.cpp)
target_link_libraries(test_opencv ${OPENCV_LIBS})
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
查找包和包含目录
在VS代码中构建项目时。当OpenCV安装在C驱动器中时,运行具有管理员权限的visual studio代码。谢谢,但我已经尝试了所有这些。我从有类似问题的人那里读到了论坛,他们建议设置路径。我下载了FindOpenCV,我用路径定义了变量,我将OpenCV文件夹移动到了不同的路径,我直接链接了opencvConfig.cmake,但错误总是一样的。cmake找不到我的opencv文件夹!至少现在我理解了cmake语言xD。那么cmake实际上使用的是FindOpenCV.cmake?现在查找OpenCV库/头有困难吗?不,就是找不到OpenCV_目录,即使我手动编写它,即使我在cmakelists.CMake中设置了一个变量。CMake实际上使用的是FindOpenCV.CMake。问题1解决了。您是否尝试过使用命令行选项(如cmake-DOpenCV_DIR=/path/to/opencv)手动设置它?另一个选项是使用ccmake或cmake-gui进行设置。尝试定义cmake_PREFIX_PATH变量并将其设置为安装OpenCV的目录。在windows上,请确保使用“/”而不是普通斜杠!设置OPENCV_DIR=C:/OPENCV/build/并不能解决我在Windows上遇到的问题,即使我有C:\OPENCV\build\OpenCVConfig.cmake…这对我很有用。不需要OpenCVConfig.cmake,只需将OpenCV_DIR设置为C:/OpenCVx.y.z/**Build**应该是export-OpenCV_DIR=On-Win
cmake_minimum_required(VERSION 3.0.0)
project(test_opencv VERSION 0.1.0)
include(CTest)
enable_testing()
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(test_opencv main.cpp)
target_link_libraries(test_opencv ${OPENCV_LIBS})
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)