| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> cmake使用教程(五)调用opencv外部库和自己生成的库 -> 正文阅读 |
|
[人工智能]cmake使用教程(五)调用opencv外部库和自己生成的库 |
这一节是我真正使用时遇到的,就是我需要构建动态库,但是这个动态库依赖外部的一些库如opencv、matlab等,那么若何构建这样的动态库呢?构建好如何测试呢?本篇将详细介绍其过程: 1.ubuntu安装opencv? ? ? ? 这个大家直接看这篇文章即可:点击opencv安装教程,这里建议大家安装3.x版本的 2.开始构建自己的库,这个库依赖opencv??我的工程文件排布:其中src是我构建库的源文件目录,build是构建库文件的生成目录,同时创建两个CMakeLists.txt, 一个在根目录下,一个在src下。 这里需要强调的是,虽然构建和测试放到一起了,但是他们也可是可以分开的,后面会介绍如何分开。 2.1 根目录下的CMakeLists.txt
? ? 这里简单的把根目录的CMakeLists.txt介绍一下,这里生成的动态库名称为mylib.so,链接动态库时可以直接填入mylib即可,cmake会自动添加完整的libmylib.so,链接静态库时需要填写完整的名称即libmylib.a: ? ? ? ?1.在确保你的opencv安装成功的情况下,可以通过? find_package(OpenCV REQUIRED)指令获取opencv的相关信息,如lib、include、version等 ? ? ? ?2.该cmake文件主要的功能是启动src的CMakeLists.txt去构建库,同时构建可执行文件main ? ? ? ?3.这里尤其需要注意的是链接库命令:??
该命令在链接动态库时,必须把该动态库所有依赖的外部库必须添加进来,否则会构建失败,本工程构建的库所依赖的外部库只有opencv,因此只需把opencv的库添加进来即可。 该命令在链接静态库时,必须填写完整的库名称即可如下:
以上就是根目录下的CMakeLists.txt,下面介绍src的CMakeLists.txt。 2.2 src目录下的CMakeLists.txt
这里需要讲的几点就是编译时是不需要外部库依赖的,只是在链接时需要外部库的依赖,这里大家需要留心。构建库的过程和我们上一节是一样的,这里不过多的讲解,下面看看生成的结果: 创建build,然后:
? ?2.3 通过ldd main跟踪一下看看链接的路径?这里测试动态库需要把根目录下的链接库那里打开动态链接,执行ldd main ?测试静态库时,需要把根目录下cmakelists.txt的静态库命令打开: ?完整的示例,到这里结束了 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 2:21:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |