博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
kinetic opencv cmake.conf 文件的bug修复
阅读量:2342 次
发布时间:2019-05-10

本文共 1809 字,大约阅读时间需要 6 分钟。

原链接:

在 kinetic 版本的 ros 中,系统自带了OpenCV 3.1。但是如果直接通过cmake文件引用的话可能会出现错误。

Imported target "opencv_xphoto" includes non-existent path"/usr/include/opencv-3.1.0-dev/opencv"in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:The path was deleted, renamed, or moved to another location.An install or uninstall procedure did not complete successfully.The installation package was faulty and references files it does notprovide.CMake Error in m-explore/map_merge/CMakeLists.txt:Imported target "opencv_xphoto" includes non-existent path"/usr/include/opencv-3.1.0-dev/opencv"in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:The path was deleted, renamed, or moved to another location.An install or uninstall procedure did not complete successfully.The installation package was faulty and references files it does notprovide.

不止我一个人遇到这个错误。可以看, 但是这个是在jade版本的OpenCV 3里面。

最后找到了原因在OpenCV的conf.cmake文件里面的一个配置。在/opt/ros/kinetic/share/OpenCV-3.1.0-dev/OpenCVConfig.cmake里面的第144行和116行

# Extract the directory where *this* file has been installed (determined at cmake run-time)if(CMAKE_VERSION VERSION_LESS "2.8.12")  get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH CACHE)else()  get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY CACHE)endif()

把其中的CACHE去掉,改成下面的样子

# Extract the directory where *this* file has been installed (determined at cmake run-time)if(CMAKE_VERSION VERSION_LESS "2.8.12")  get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" PATH)else()  get_filename_component(OpenCV_CONFIG_PATH "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)endif()

如果加CACHE,OpenCV的路径就会定位到/usr/。不加CACHE就会正确定位。不知道是为什么。原则上说CACHE只是把路径加到缓存里面,可以提高效率,应该不会出这个问题。难道是由于系统装了其他版本的OpenCV所以CACHE出了问题?经过我搜索发现并不是所有的人都遇到这个问题,看来还是和本地的环境配置有关系。

反正如上的方法是可以解决问题 :-D

转载地址:http://ofdvb.baihongyu.com/

你可能感兴趣的文章
const的使用方法----腾讯2016研发工程师笔试题(一)
查看>>
哪些设计模式是降低资源使用率:----腾讯2016研发工程师笔试题(一)
查看>>
n个顶点,m条边的全连通图,至少去掉____边才能构成一棵树?----腾讯2016研发工程师笔试题(一)
查看>>
在序列(22,34,55,77,89,93,99,102,120,140)中,采用二分查找,分别查找77,34,99,所需的查找次数分别为()----腾讯2016研发工程师笔试题(一)
查看>>
ip地址10.1.8.0/24和10.1.9.0/24,下列哪个是正确的汇总网段:----腾讯2016研发工程师笔试题(一)
查看>>
默认复制构造函数 bitwise 语义 delete 多次----腾讯2016研发工程师笔试题(一)
查看>>
在C++面向对象编程语言中,以下关于接口的阐述不正确的是:----腾讯2016研发工程师笔试题(一)
查看>>
下面关于HTTP协议的说法正确的是:----腾讯2016研发工程师笔试题(一)
查看>>
关于多线程和多进程编程,下面描述正确的是():----腾讯2016研发工程师笔试题(一)
查看>>
动态规划--钢条切割
查看>>
有多少个进程被 fork 出来了?----阿里巴巴2015校招研发在线笔试题
查看>>
下面的函数哪个是系统调用而不是库函数()?----阿里巴巴2015校招研发在线笔试题
查看>>
下列不属于hash碰撞解决方法的是()。----阿里巴巴2015校招研发在线笔试题
查看>>
针对外部存储器(如磁盘)上存放的程序和数据,说法正确的是()。----阿里巴巴2015校招研发在线笔试题
查看>>
下列关于线程调度的叙述中,错误的是()。----阿里巴巴2015校招研发在线
查看>>
如何扩展 web 服务器?----阿里巴巴2015校招研发在线
查看>>
有两个32bit的数A、B,使用下面方式得到32bit的数C、D。哪一种可以使用C、D得到A、B的值?----阿里巴巴2015校招研发在线
查看>>
如何设计数据表、解决数据库并发访问瓶颈、数据库事务----阿里巴巴2015校招研发在线
查看>>
皮划艇找瓶子--------阿里巴巴2015校招研发在线
查看>>
HTTP的会话有四个过程,请选出不是的一个()----百度2016研发工程师笔试题(六)
查看>>