【发布时间】:2018-05-20 08:00:26
【问题描述】:
我想通过 CMakeLists.txt 使用 OpenCV 3,CMakeLists.txt 如下:
set(OpenCV_ROOT /usr/local/opencv3)
set(OpenCV_INCLUDE_DIRS ${OpenCV_ROOT}/include)
set(OpenCV_LIBRARIES "${OpenCV_ROOT}/lib")
message("find ${OpenCV_INCLUDE_DIRS}")
.....
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(main ${OpenCV_LIBRARIES})
在以下位置找到 OpenCV:/usr/local/include/opencv;/usr/local/include
但是OpenCV 3的路径是/usr/local/opencv3。看起来 指定的路径不起作用,CMakeLists.txt 使用默认的 opencv 2.4 而不是 OpenCV 3。
如何解决这个问题呢?我整天都在努力。
【问题讨论】:
-
您忘记在代码中显示
find_package()调用。在尝试在新位置找到 OpenCV 之前,您是否清理过构建目录(或者至少是CMakeCache.txt文件)?您使用哪个FindOpenCV.cmake脚本?该脚本确定了指定 OpenCV 的非默认位置的方法。如果您不使用FindOpenCV.cmake脚本,那么指定包位置的方法包括: 1. 设置OpenCV_DIR变量。 2.设置CMAKE_PREFIX_PATH变量。 3.为find_package()调用指定PATHS选项。 -
谢谢!我删除了 CMakeCache.txt 和 CMakeFiles,并尝试使用 find_package(OpenCV PATHS=/usr/local/opencv3),但它无法解决我的问题。然后我试了set(OpenCV_DIR /usr/local/opencv3),还是不能解决。 “/usr/local/opencv3”是我安装opencv3的路径。
-
正确:
find_package(OpenCV PATHS /usr/local/opencv3)(没有等号)。如果您不使用FindOpenCV.cmake脚本,这将起作用。不要忘记再次清除缓存。