cmakelist中找不到opencv,Eigen(多版本opencv切换,cmakelist中路径正确却报找不到路径下的.hpp)

使用opencv

1. 在cmakelist里面

(1) 当存在多版本opencv时,下面的写法会使用默认版本。

find_package(OpenCV REQUIRED)

(2) 使用指定版本时:

# set(OpenCV_DIR "/home/liuxiangyue/其它/opencv-3.4.3/build")  #Liucx添加
set(OpenCV_DIR "/opt/ros/kinetic/include/opencv-3.3.1-dev")  #非不得已不建议使用此版本
find_package(OpenCV REQUIRED)

注意:opencv-3.3.1有坑,在有些代码中,像素的值与其它版本的像素值不一样,也会存在图像中某些地方显示不出来的情况。

(3) 当使用(2)后,发现在其它文件中调用opencv中的opencv2中的某些.hpp文件还是会报错。但是已经检查了该路径下确实有这些.hpp文件,例如报错:

cmakelist中找不到opencv,Eigen(多版本opencv切换,cmakelist中路径正确却报找不到路径下的.hpp)_第1张图片

此时是因为编译时opencv的链接地址还是没有找对。

解决方法如下:

参考链接:https://blog.csdn.net/mxs30443/article/details/89890258

(1) 查找系统中所有的OpenCVConfig.cmake文件:

      sudo find / -name OpenCVConfig.cmake

(2) 在CMakeList.txt中修改为:

      SET(OpenCV_DIR 上述的filepath)

      find_package(OpenCV  REQUIRED)

set(OpenCV_DIR "/opt/ros/kinetic/share/OpenCV-3.3.1-dev")  #Liucx添加
find_package(OpenCV REQUIRED)

 

使用Eigen

1. 在cmakelist里面

(1) 一般情况下使用:

find_package(Eigen3 REQUIRED)

(2) 当使用(1)报错找不到时,使用include直接包含绝对路径即可

include_directories("/usr/include/eigen3")

 

你可能感兴趣的:(C++)