代码仓库:
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项目文件。