【CMake入门】第三节——构建项目并调用或生成库

系列文章:
【CMake入门】第一节——CMake的安装与简单样例
【CMake入门】第二节——CMake常用指令介绍

构建单文件项目,调用第三方库

# CMake最低版本号要求
cmake_minimum_required(VERSION 2.8)# 项目名称
project(demo)# 设置编译方式
set( CMAKE_BUILD_TYPE Release)# 支持C++11
set( CMAKE_CXX_FLAGS "-std=c++11")# 查找系统里的OpenCV
# set(OpenCV_DIR "D:/Program Files/opencv-3.4.6/build")
find_package( OpenCV 3 REQUIRED)# 添加项目包含路径
include_directories( ${OpenCV_INCLUDE_DIRS} )# 用指定的源文件为工程添加可执行文件,名字为test
add_executable( test test.cpp )# 为库或可执行文件添加库连接(必须要在add_executable后面)
target_link_libraries( test ${OpenCV_LIBS} )

构建多文件项目,同时自己生成库

# CMake最低版本号要求
cmake_minimum_required(VERSION 2.8)# 项目名称
project(demo)# 设置编译方式
set( CMAKE_BUILD_TYPE Release)# 支持C++11
set( CMAKE_CXX_FLAGS "-std=c++11")# 查找系统里的OpenCV
find_package( OpenCV 3 REQUIRED)# 添加项目包含路径
include_directories( ${PROJECT_SOURCE_DIR}/include/		#工作空间下的include,同级目录有build、source文件夹${OpenCV_INCLUDE_DIRS} )
# message("PROJECT_SOURCE_DIR = " ${PROJECT_SOURCE_DIR})
# set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
# set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
# message("CMAKE_BINARY_DIR = " ${CMAKE_BINARY_DIR})
# message("CMAKE_SOURCE_DIR = " ${CMAKE_SOURCE_DIR}) # 将指定的源文件生成链接库文件。STATIC为静态链接库,SHARED为共享链接库
# 这个test.cpp是自己写的,里头有一堆函数,就是没有主函数。我们现在想让这个cpp文件变成一个库,方便我们调用里头的函数
add_library(lib_test ${PROJECT_SOURCE_DIR}/source/test.cpp)# 为上面自己生成的库或可执行文件添加库连接
target_link_libraries( lib_test${OpenCV_LIBS})# 用指定的源文件为工程添加可执行文件,名字为test
add_executable( ${PROJECT_NAME} ${PROJECT_SOURCE_DIR}/testBed/main.cpp )# 为库或可执行文件添加库连接(必须要在add_executable后面)
# 因为我们主函数调用了我们自己生成的库里头的函数,所以我们在这里同时添加了lib_test这个库的链接
target_link_libraries( ${PROJECT_NAME} ${OpenCV_LIBS}lib_test)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/205791.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Kubernetes]1.Kubernetes(K8S)介绍,基于腾讯云的K8S环境搭建集群以及裸机搭建K8S集群

一. Kubernetes(K8S)简介 Kubernetes (K8S) 是一个为 容器化应用 提供 集群部署 和 管理 的开源工具,和docker swarm类似,由 Google 开发. Kubernetes 这个名字源于希腊语,意为 “ 舵手 ” 或 “ 飞行员 ” , k8s 这个缩写是因为 k 和 s 之间有八个字符的关系, Google…

Mac电脑统计分析绘图 GraphPad Prism 10 最新 for Mac

GraphPad Prism 10是一款强大的科学数据分析和可视化软件,提供了丰富的统计工具、数据可视化选项和报告生成功能。它使用户能够更轻松地分析和解释实验数据,以支持科学研究和决策。 数据导入和整理:GraphPad Prism 10支持从多种数据源导入数据…

GO设计模式——10、组合模式(结构型)

目录 组合模式(Composite Pattern) 优缺点 使用场景 代码实现 组合模式(Composite Pattern) 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一…

Mac M1芯片安装es,kibana

安装:brew search elasticsearch //查看版本 brew install elastic/tap/elasticsearch-full //安装这个full版本 。。。等待安装 启动:cd /opt/homebrew/bin ./elasticsearch 访问: http://localhost:9200/ 安装:brew sear…

flink源码分析之功能组件(六)-心跳组件

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。 本文解释心跳组件,心跳组件监听组件间连接活性,超时触发重连,保证连接有效性;断连…

ChatGPT/GPT4科研实践篇: AI绘图+论文写作+编程

1、熟练掌握ChatGPT提示词技巧及各种应用方法,并成为工作中的助手。 2、通过案例掌握ChatGPT撰写、修改论文及工作报告,提供写作能力及优化工作 3、熟练掌握ChatGPT融合相关插件的应用,完成数据分析、编程以及深度学习等相关科研项目。 4、…

Kafka -- 初识

目录 kafka是什么 Topic Partition Broker Cousumer CousumerGroup Offset reblance broker 消息存储 Isr kafka是什么 Kafka 是一个分布式的消息引擎,能够发布和订阅消息流(类似于消息队列) 以容错的、持久的方式存储消息流 多分区…

MYSQL练题笔记-高级查询和连接-最后一个能进入巴士的人

一、题目相关内容 1)相关的表和题目 2)帮助理解题目的示例,提供返回结果的格式 二、自己初步的理解 一群人要上巴士但是巴士有体重限制,那只能有限个人才能上去 最后输出这个最后一个上去还不超重的人的名字 我认为首先要缩小…

HarmonyOS 开发基础(二)Image

HarmonyOS 开发基础(二)Image Entry Component struct Index {// 创建一个状态变量 img 存储 img 网络地址State img: string https://img1.baidu.com/it/u4049022245,514596079&fm253&app138&sizew931&n0&fJPEG&fmtauto?sec1…

创建vue项目:node.js下载安装、配置环境变量,下载安装cnpm,配置npm的目录、镜像,安装vue、搭建vue项目开发环境(保姆级教程一)

今天讲解 Windows 如何创建 vue 项目,搭建 vue 开发环境,这是这个系列的第一章,有什么问题请留言,请点赞收藏!!! 文章目录 一、Vue简单介绍二、开始搭建1、安装node.js环境2、配置npm下载时的默…

1、Redis变慢原因排查(上)

感觉Redis变慢了,这些可能的原因你查了没 ?(上) Redis 作为一款业内使用率最高的内存数据库,其拥有非常高的性能,单节点的QPS压测能达到18万以上。但也正因此如此,当应用访问 Redis 时,如果发现响应延迟变…

【WPF】使用异步任务来执行耗时的操作,保持UI的响应性。

WPF提供了多种方法来实现异步任务,包括使用Task和async/await关键字、使用BackgroundWorker组件以及使用ThreadPool等。 下面是一些常见的WPF异步任务实现方法: 使用Task和async/await关键字: private async void Button_Click(object sen…

QT----Visual Studio输入中文报错,常量中有换行符

问题描述 在VS中写qt时发现在标题中输入了中文直接把报错无法运行 解决方法1 修改文件的编码方式。在VS菜单栏 工具->自定义-》命令-》选择文件-》添加高级保存选项命令。 双加选中添加中文的文件,文件-》高级保存选项-》修改utf-8就可以运行了 解决方法2…

AMD 发布新芯片MI300,支持训练和运行大型语言模型

AMD 宣布推出 MI300 芯片,其 Ryzen 8040移动处理器将于2024年用于笔记本电脑。 AMD官方网站:AMD ׀ together we advance_AI AMD——美国半导体公司专门为计算机、通信和消费电子行业设计和制造各种创新的微处理器(CPU、GPU、主板芯片组、电…

电脑搜不自己的手机热点,其余热点均可!

一、现象: 之前可正常连接,突然间发现收不到自己的WiFi信号,其余人均可收到。通过重复手机电脑关机、改变热点设置中的频段等方式均没解决,同事电脑和手机可搜索到我的WiFi。 二、问题: WiF驱动程序更新 三&#x…

vue项目中如何引入zip压缩包之解决方案

最近在做项目中遇到了一个项目本地化的问题,里面有一个核心的问题是,前端需要根据后端返回的压缩包进行压缩包的解析处理。所以前端项目里需要引入这个压缩包,这个时候就遇到了很多比较坑的问题,因为项目最终是打包成一个dist目录…

字节开源的netPoll底层LinkBuffer设计与实现

字节开源的netPoll底层LinkBuffer设计与实现 为什么需要LinkBuffer介绍设计思路数据结构LinkBufferNodeAPI LinkBuffer读 API写 APIbook / bookAck api 小结 本文基于字节开源的NetPoll版本进行讲解,对应官方文档链接为: Netpoll对应官方文档链接 netPoll底层有一个…

Python对数组/矩阵进行累加-累乘-累除

在本文中,我们将介绍Numpy中的累加和累乘运算。累加/累乘是指在一个数组中按照一定的规则对元素进行相加或相乘的操作,通常返回一个新的数组。 累加运算 在Numpy中,我们可以使用cumsum函数对数组进行累加运算。cumsum函数将数组每个元素顺序…

【python、opencv】opencv仿射变换原理及代码实现

opencv仿射变换原理 仿射变换是opencv的基本知识点,主要目的是将原始图片经过仿射变换矩阵,平移、缩放、旋转成目标图像。用数学公式表示就是坐标转换。 其中x,y是原始图像坐标,u,v是变换后的图像坐标。将公式转换为…

idea__SpringBoot微服务03——yaml(新注解)(新的依赖)

yaml 一、数据格式二、注入配置文件(yaml注入)(新注解ConfigurationProperties)三、注入配置文件(properties注入)(新注解PropertySource)四、yaml配置文件占位符${}五 、yaml跟prop…