【CMake|TensorRT】Windows下使用CMake编译项目,yolov8-seg为例子

代码仓库:

yolov8 trt

CMakeLists.txt解析

  • 首先指定cmake支持的最大版本,只要版本号小于我们下载的cmake版本即可:
cmake_minimum_required(VERSION 3.20)
  • 指定我们项目的名称,随便取什么名字:
project (yolov8-seg)
  • 添加编译器标志,使用c++14的标准:
add_definitions(-std=c++14)
  • 定义API_EXPORTS预处理器宏,用于导出动态链接库时使用:
add_definitions(-DAPI_EXPORTS)
  • 设置c++标准为14
set(CMAKE_CXX_STANDARD 14)
  • 设置构建类型为Release版本(优化版本):
set(CMAKE_BUILD_TYPE Release)

下面就是关键了:

  • 如果我们的代码中用到cuda的,需要设置cuda编译器的路径:
set(CUDA_COMPILER_PATH "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.7/bin/nvcc.exe")
  • 设置TensorRT安装目录的路径:
set(TENSORRT_PATH "C:/TensorRT-8.6.1.6")
  • CUDA头文件包含以及库目录添加到搜索路径中
find_package(CUDA REQUIRED) 
include_directories(${CUDA_INCLUDE_DIRS}) 
link_directories(${CUDA_TOOLKIT_ROOT_DIR}/lib/x64)
  • TensorRT头文件包含以及库目录添加到搜索路径中
include_directories(${TENSORRT_PATH}/include)
link_directories(${TENSORRT_PATH}/lib)
  • opencv头文件包含以及库目录添加到搜索路径中
find_package(OpenCV REQUIREDCONFIGPATHS C:/opencv/build/x64/vc16/lib)
include_directories(${OpenCV_INCLUDE_DIRS})
if (OpenCV_FOUND) include_directories(${OpenCV_INCLUDE_DIRS}) link_directories(${OpenCV_LIBRARY_DIRS}) add_definitions(${OpenCV_DEFINITIONS}) 
else() message(FATAL_ERROR "OpenCV not found!") 
endif()
  • 包含项目中自定义的头文件和源文件:
include_directories(${PROJECT_SOURCE_DIR}/include/)
file(GLOB_RECURSE SRCS ${PROJECT_SOURCE_DIR}/src/*.cpp)
  • 添加名为yolov8-seg的可执行目标,并指定源文件:
add_executable (yolov8-seg ${PROJECT_SOURCE_DIR}/src/main.cpp ${SRCS})
  • 添加动态链接库
target_link_libraries(yolov8-seg nvinfer cudart nvonnxparser cudnn nvinfer_plugin ${OpenCV_LIBS})

编译

打开cmake-gui.exe:
在这里插入图片描述
指定我们的项目路径,和build的路径(没有build文件夹则会自动创建)。

点击configure选择我们的底层生成器,这里我的vs2022:
在这里插入图片描述
然后点击finish,最后再点击generate即可生成我们的.sln项目文件。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Ruoyi导出excel,导出对象的子列表

说明:此文章是对ruoyi分离版后台功能,导出excel文件,导出对象的子列表的补充 若依文档: 后台手册 | RuoYi 导出文件结果 :::color4 补充文档场景: 如上图所示,角色中的字段“角色编号”,“…

MBR40150FCT-ASEMI大功率肖特基MBR40150FCT

编辑:ll MBR40150FCT-ASEMI大功率肖特基MBR40150FCT 型号:MBR40150FCT 品牌:ASEMI 封装:TO-247 正向电流:40A 反向电压:150V 正向压降:0.95V~1.90V 引线数量:3 芯片个数&am…

构建数字化诊断平台,助力服务商与企业共赢

在当今时代,全球信息化、网络化、智能化趋势日益明显,数字化转型已成为企业发展的必然选择。近年来,我国经济发展进入新常态,市场竞争愈发激烈,企业面临诸多挑战。因此,全国各地也在逐步且持续地推动和组织…

接口自动化测试框架搭建详解

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、基本目录的搭建 report:静态输出目录(报告或者日志) data:静态输入目录(可以存放Excel数据,被读取的一些数据) utils&…

找不到x3daudio1_7.dll无法继续执行代码怎么解决,共有七种方法

​在使用某些游戏或多媒体应用时,您可能会遇到“找不到X3DAudio1_7.dll”这样的错误提示。这个问题不仅会影响游戏的启动和音效质量,还可能引发其他系统性能问题。本文将全面解读X3DAudio1_7.dll丢失的原因、具体影响、解决方法以及预防措施,…

连接器上市企业观察:通讯利好,光储承压

【哔哥哔特导读】2024年已临近尾声,前三季度,29家连接器上市企业业绩如何?通讯、光伏、储能等器热门领域,连接器行业总体趋势相较上一年发生了什么变化? 10月份,连接器上市企业集中发布三季度业绩报告。《国际线缆与…

锂电池保护板行业分析与未来预测

锂电池保护板是对串联锂电池组的充放电保护;在充满电时能保证各单体电池之间的电压差异小于设定值(一般20mV),实现电池组各单体电池的均充,有效地改善了串联充电方式下的充电效果;同时检测电池组中各个单体…

企业u盘管控丨企业禁止U盘使用的5个小妙招分享!你最看好哪一个?

在企业日常运营中,U盘因其便携性和易用性,成为了数据传输的重要工具。 然而,若不对U盘使用加以严格管控,便可能引发数据泄露、病毒感染、管理混乱和资源滥用等一系列问题。 接下来,我们将分享五个企业禁止U盘使用的小…

Linux中扫描网络的“nmap”工具使用方法

0-介绍 在Linux中进行网络管理的最强大工具之一首推nmap。如果您想要扫描您的网络,查看哪些端口是开放的以及正在运行的服务,nmap是您的理想选择。注意手机上termux 中的用法一致。 1-什么是nmap? nmap属于网络映射器h工具,是一个用于扫描…

NVR小程序接入平台EasyNVR多品牌NVR管理设备:GB28181协议摄像头如何接入到EasyNVR中?

随着视频监控技术的不断进步,摄像头拉流技术已经成为现代安防系统中的关键组成部分。在众多拉流协议中,GB28181协议凭借其高安全性和设备兼容性,在大规模、跨区域的视频监控系统中展现出显著优势。本文将详细介绍如何将GB28181协议摄像头接入…

通胀降温遇到波动,美联储降息或成更大争议焦点

近期美国的通胀数据继续呈现出不均衡的走低趋势。尽管10月份的消费价格同比上涨略有回升,通胀整体走势依然显示出降温的迹象。根据最新报告,虽然通胀没有完全消退,但依然无法阻止市场对美联储在12月份可能再次降息的预期。不过,这…

不锈钢高速肉馅斩拌机:

不锈钢高速肉馅斩拌机通过斩切作用提高产品的细密度和弹性,广泛应用于肉制品的深加工制作,如机制作肉丸、香肠等。其工作原理是利用斩刀高速旋转的斩切作用,将原料进行斩切和乳化处理,从而提高产品的细腻度和弹性。斩拌机具有以下…

1.0版-结构化(经典)软件开发方法: 需求分析阶段+设计阶段

结构化软件开发方法: 特点: 面向数据流, 以数据流为中心构建软件的分析/设计模型 结构化分析模型:数据流图 结构化设计模型:结构图, 模块的程序流程图 1.建立结构化分析模型: 数据流图--DFD图 功能建模, 规约加工流程 实体关系图-ER图 数据建模, 对实体对象的描述 状态转换图-S…

C++基础:Pimpl设计模式的实现

2024/11/14: 在实现C17的Any类时偶然接触到了嵌套类的实现方法以及Pimpl设计模式,遂记录。 PIMPL ( Private Implementation 或 Pointer to Implementation )是通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏。 …

Intellij idea 报错:Error : java 不支持发行版本5

点击“Settings”-->“Bulid, Execution,Deployment”-->“Java Compiler”,Target bytecode version设为本地Java版本。(可以在Default Settings中把Project bytecode version 一劳永逸地配置成本地Java版本) Default Settings&#x…

物理验证Calibre LVS Stamping Conflict SoftConnect案例解析

最近有好几个星球会员问到物理验证Calibre LVS检查中的Stamping Conflict问题。小编今天给大家分享下Stamping冲突的相关topic。 Calibre PEX Hspice Netlist提取步骤(数模芯片提取spice netlist流程) Stamping Conflict概念 当不同的net对应的net sha…

TypeScript在现代前端开发中的应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 TypeScript在现代前端开发中的应用 TypeScript在现代前端开发中的应用 TypeScript在现代前端开发中的应用 引言 TypeScript 概述…

代码随想录训练营Day24 | 134. 加油站 - 135. 分发糖果 - 860.柠檬水找零 - 406.根据身高重建队列

134. 加油站 题目链接:134. 加油站 思路: 由题意可得,需要能够走完所有的加油站,就需要保证车到达每一个加油站的时候有油,故先对gas和cost数组做差,得到每个加油站的油差,正代表着车在这里能加…

Burp Suite 专业版使用【Mac版本 m1处理器】

前言 Burp Suite 专业版(Professional)是需要付费使用的,但是社区版(Community)是免费的,下图第一个下拉框可以切换专业版和社区版本。 Burp Suite 专业版如果没有License key,是不能正常使用的,下边是在没有购买License key的情况下使用Burp Suite 专业版的方法。 本文是…

【MySQL 保姆级教学】事务的隔离级别(详细)--下(13)

事务的隔离级别 1. 如何理解事务的隔离性2. 事务隔离级别的分类3. 查看和设置事务隔离级别3.1 全局和会话隔离级别3.2 查看和设置隔离级别 4. 事务隔离级别的演示4.1 读未提交(Read Uncommitted)4.2 读已提交(Read Committed)4.3 …