第一种使用 find_package的方法
示例代码如下:
# 声明要求的 cmake 最低版本
cmake_minimum_required( VERSION 2.8 )

# 声明一个 cmake 工程
project( pro )

# 设置编译模式
set( CMAKE_BUILD_TYPE "Debug" )

#添加OPENCV库
#指定OpenCV版本,代码如下
#find_package(OpenCV 3.3 REQUIRED)
#如果不需要指定OpenCV版本,代码如下
find_package(OpenCV REQUIRED)

#添加OpenCV头文件
include_directories(${OpenCV_INCLUDE_DIRS})

#显示OpenCV_INCLUDE_DIRS的值
message(${OpenCV_INCLUDE_DIRS})

# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( main main.cpp )

# 将库文件链接到可执行程序上
target_link_libraries( main ${OpenCV_LIBS})

代码部分解释
find_package(OpenCV REQUIRED)会在Ubuntu系统中找到OpenCVConfig.cmake,该文件定义了OpenCV_INCLUDE_DIRS和OpenCV_LIBS 等变量,因而可以使用 include_directories和target_link_libraries来访问这两个变量。

可以通过打开terminal输入locate OpenCVConfig.cmake来找到这个.cmake文件,用以确认系统确实安装了OpenCV.

第二种使用link_libraries(opencv库名的方法)
既然我们知道了find_package的作用是找到后缀名为.cmake的文件,以此来获取其中的引用目录(.h文件的路径)和库的路径(例如“ /usr/lib/x86_64-linux-gnu/libopencv_video.so”),那么我们也可以选择直接使用正确路径的引用目录和库目录。

通过include_directories( your/path/to/OpenCV/include)来正确添加引用目录
通过link_directories( your/path/to/OpenCV/lib) 来添加库的目录
通过link_libraries(name1 name2 name3)来实现库的链接
有了link_libraries(name1 name2 name3),就不需要target_link_libraries(main ${PATH/NAME})了。

示例代码如下(示例中使用的是ROS系统安装的opencv3的路径和库)
cmake_minimum_required( VERSION 2.8 )
project( pro )
set( CMAKE_BUILD_TYPE "Release" )
set( CMAKE_CXX_FLAGS "-std=c++11" )
include_directories(
"/opt/ros/kinetic/include/opencv-3.3.1-dev/"
)
#添加动态库的路径
link_directories("/opt/ros/kinetic/lib/x86_64-linux-gnu")
#有了上面的路径,下面就可以直接写opencv_aruco3这样的名字了
#opencv_xxxxx不带d和带d分别表示release和debug版本。
link_libraries(
opencv_aruco3
opencv_bgsegm3
opencv_bioinspired3
opencv_calib3d3
opencv_ccalib3
opencv_core3
opencv_cvv3
opencv_datasets3
opencv_dpm3
opencv_face3
opencv_features2d3
opencv_flann3
opencv_fuzzy3
opencv_hdf3
opencv_highgui3
opencv_imgcodecs3
opencv_img_hash3
opencv_imgproc3
opencv_line_descriptor3
opencv_ml3
opencv_objdetect3
opencv_optflow3
opencv_phase_unwrapping3
opencv_photo3
opencv_plot3
opencv_reg3
opencv_rgbd3
opencv_saliency3
opencv_shape3
opencv_stereo3
opencv_stitching3
opencv_structured_light3
opencv_superres3
opencv_surface_matching3
opencv_text3
opencv_tracking3
opencv_video3
opencv_videoio3
opencv_videostab3
opencv_viz3
opencv_xfeatures2d3
opencv_ximgproc3
opencv_xobjdetect3
opencv_xphoto3
)
#生成程序
add_executable( main main.cpp )
#不需要target_link_libraries()了

在写代码过程中发现的东西
link_directories()单单用这条命令基本没什么意义。一般这里面填写的参数之前也在$PATH中包含了。

link_libraries里面可以有多个库的名字。

find_library指令也是用来找库进行链接的。用法如下:
find_library (<VAR> name1 [path1 path2 ...])
find_library官方说明
示例 find_library(OpenCV_LIBS opencv_aruco3 "/opt/ros/kinetic/lib/x86_64-linux-gnu" )
意为:在路径/opt/ros/kinetic/lib/x86_64-linux-gnu中寻找名为libopencv_aruco3.so的库,将其命名为OpenCV_LIBS。
正如find_library这个名字所象征的,它只能找一个库,不能同时找多个库,虽然官网有示例说可以加入option实现,但我没有成功。它不能实现类似于aux_source_directory(. SRC)的功能

find_library()由于只是将某个so文件映射为某个指定的变量,比如将/opt/ros/kinetic/lib/x86_64-linux-gnu/libopencv_aruco3.so映射为OpenCV_LIBS,因而在使用这个libopencv_aruco3.so时,就需要加入target_link_libraries(main ${OpenCV_LIBS})来使这个库成功和main链接

转载于:https://www.cnblogs.com/wangshuyi/p/11405364.html

配置opencv cmake相关推荐

  1. android studio cmake opencv_Mac下安装及配置OpenCV环境(Xcode)

    Mac下安装及配置OpenCV环境(Xcode) OpenCV (Open Source Computer Vision Library) OpenCV是Intel开源计算机视觉库.它由一系列 C 函 ...

  2. CMake配置OpenCV时,显示错误:find_host_package(PythonInterp 2.7)' found wrong Python version

    CMake配置OpenCV时,显示错误:find_host_package(PythonInterp 2.7)' found wrong Python version 问题描述: CMake配置Ope ...

  3. CUDA support is required (OpenCV CMake parameter ‘WITH_CUDA‘ must be true).

    运行下面示例代码,会出现上述问题,说明没有找到CUDA环境,解决方法:1,确定opencv-cuda安装配置正确,2,一定要创建CUDA程序,比如在VS中,不能创建C++程序来跑CUDA的程序. /* ...

  4. CentOS系统上编译、安装、配置OpenCV

    声明:本文是个人根据相关博客资料加上自己的经验整理,在此分享以供大家学习交流! 假设CentOS系统下的CodeBlocks已经安装完成,下面我们要在CentOS平台下编译OpenCV,并在CodeB ...

  5. [OpenCV] -- win7下配置OpenCV的Qt开发环境

    http://blog.csdn.net/qiurisuixiang/article/details/8665278 编译.配置OpenCV的工程相当曲折,编译OpenCV不下5次,一开始还以为是自己 ...

  6. QT配置opencv开发环境

    0 编译.配置OpenCV的工程相当曲折,编译OpenCV不下5次,一开始还以为是自己的配置.编译步骤有问题,后来发现原来是自己电脑装的Qt Creator版本有点低,里面的MingW版本较低,而Op ...

  7. OpenCV android sdk配置OpenCV android NDK开发实例

    OpenCV android sdk配置OpenCV android NDK开发实例 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/det ...

  8. 配置OpenCV的Qt开发环境

    QT&openCV系列!链接:http://www.cnblogs.com/emouse/category/449213.html 本文链接:http://blog.csdn.net/qiur ...

  9. 【C++版Opencv】【Ubuntu】VScode配置Opencv

    1 安装基本工具 sudo apt install -y g++ sudo apt install -y cmake sudo apt install -y make sudo apt install ...

最新文章

  1. Cookie和Session的区别
  2. UIKeyboardTypeNumberPad 数字键盘添加完成按钮
  3. POJ 3580 SuperMemo
  4. [蓝桥杯][算法提高VIP]凶手-思维
  5. 工厂设计模式和策略设计模式_设计模式:策略
  6. Docker自动补全容器名
  7. Spring笔记——使用Spring进行面向切面(AOP)编程
  8. java编程过程——流程图
  9. java星号心形代码_用符号拼一个完整的大爱心 它起源于中国的甲骨文的心字
  10. macbook 如何卸载 homebrew
  11. html如何制作艺术字体,影视动画制作软件怎么制作多彩立体字 艺术字体制作软件 字体渐变效果...
  12. Linux编程技术总结
  13. HBuilder软件下载及安装教程
  14. 谢国忠正在走入一种非理性思维状态
  15. systrace的简单介绍及使用
  16. python用for循环输出直角三角形_使用FOR循环语句在屏幕上输出一个由星号组成的直角三角形...
  17. xsplit PHP扩展
  18. layui.layedit富文本编辑器
  19. 【复现】23春云曦期中考核 Writeup
  20. 联想王震宇:联想企业网盘3.5版本的功能亮点

热门文章

  1. python pexpect pxssh scp_Python 的 pexpect 使用 scp 把文本文件传一半就不传了,怎么办?...
  2. 每日一题(29)—— 如何引用一个已经定义过的全局变量
  3. opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法
  4. 【Pytorch神经网络实战案例】07 预测泰坦尼克号上生存的乘客
  5. vb 根据pid获取句柄_C++中避免返回指向对象内部的句柄(handles)
  6. python提取txt中的字符串数据_python 从字符串中提取数值
  7. LeetCode 5268. 找出两数组的不同(set)
  8. 牛客 XOR和(找规律)
  9. LeetCode MySQL 1321. 餐馆营业额变化增长(over窗口函数)
  10. 蒙特卡罗法近似求解圆周率π