CMake引入opencv编译时includes non-existent path问题解决

在用opencv时编辑CMakeLists.txt时添加下面一句

find_package( OpenCV 3.3 REQUIRED )
然后就会报下面的错误

CMake Error in CMakeLists.txt:
  Imported target "opencv_calib3d" includes non-existent path

    "/usr/local/include/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 not
  provide.

然后解决方案,基本都是类似下面链接中给的方法

http://community.bwbot.org/topic/153/kinetic-opencv-cmake-conf-%E6%96%87%E4%BB%B6%E7%9A%84bug%E4%BF%AE%E5%A4%8D  

即在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()

但是我依然报错...

后来我找到opencv安装目录中的OpenCVConfig.cmake文件,发现有下面一行

set(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}/include" "${OpenCV_INSTALL_PATH}/include/opencv")

由于我的opencv install path是/usr/local,而OpenCV_INCLUDE_DIRS设置成后面的路径是找不到的。我把这句改成下面的句子

set(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}")

终于编译成功。。。


 

 

 

 

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值