Visual Studio 2022新建 cmake 工程测试 tensorRT 自带样例 sampleOnnxMNIST

1. 新建 cmake 工程 vs2022_cmake_sampleOnnxMNIST_test( 如何新建 cmake 工程,请参考博客:Visual Studio 2022新建 cmake 工程测试 opencv helloworld )

2. 删除默认生成的 vs2022_cmake_sampleOnnxMNIST_test.h 头文件

3. 修改默认生成的 vs2022_cmake_sampleOnnxMNIST_test.cpp 文件,将内容替换为目录:

D:\install\tensorRT\TensorRT-8.6.1.6\samples\sampleOnnxMNIST

 下的 sampleOnnxMNIST.cpp 文件的内容。

4. 发现 D:\install\tensorRT\TensorRT-8.6.1.6\samples\sampleOnnxMNIST 中的 sample_onnx_mnist.vcxproj 文件中有如下内容:

 <ItemGroup>
    <ClCompile Include="sampleOnnxMNIST.cpp" />
    <ClCompile Include="../common/getopt.c" />
    <ClCompile Include="../common/logger.cpp" />
  </ItemGroup>

于是将:

 D:\install\tensorRT\TensorRT-8.6.1.6\samples\common

下的 getopt.c和 logger.cpp文件复制到该工程中( 即 vs2022_cmake_sampleOnnxMNIST_test.cpp 所在的目录 ),并修改 CMakeLists.txt 中的 add_executable 指令,修改为如下所示:

add_executable("vs2022_cmake_sampleOnnxMNIST_test" 
				"vs2022_cmake_sampleOnnxMNIST_test.cpp" 
				"getopt.c" 
				"logger.cpp"
				)

5. 用 Everything 查找 D:\install\tensorRT\TensorRT-8.6.1.6\samples\sampleOnnxMNIST 中的 sample_onnx_mnist.vcxproj 文件中的 标签 <AdditionalDependencies> 中的 :

nvinfer.lib;
nvinfer_plugin.lib;
nvonnxparser.lib;
nvparsers.lib;
cudnn.lib;
cublas.lib;
cudart.lib;

这几个静态库文件所在的目录,发现都是在:

C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6/lib/x64/

目录中,于是修改 CMakeLists.txt,在 add_executable 指令前面新加:

link_directories( "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6/lib/x64" )

link_libraries( 	nvinfer 
					nvinfer_plugin
					nvonnxparser
					nvparsers
					cudnn
					cublas
					cudart  )

指令用来连接库cuda( 还是 tensorRT的??? )的静态库文件。

6. 发现 D:\install\tensorRT\TensorRT-8.6.1.6\samples\sampleOnnxMNIST\sample_onnx_mnist.vcxproj 文件中的 <AdditionalIncludeDirectories > 标签中有如下内容:

..\..\include;
..\common;
..\common\windows;
$(CUDA_PATH)\include;

于是在 CMakeLists.txt 中加入:

include_directories( "D:/install/tensorRT/TensorRT-8.6.1.6/samples/common" 
					 "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6/include" )

用来加入头文件。

ps:"..\..\include" 表示的是 D:\install\tensorRT\TensorRT-8.6.1.6\include,为啥没有将其加入到 include_directories 指令中呢?因为安装 tensorRT 的时候已经将该目录下的头文件复制到:

C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6/include

 中了。

7. 最终的 CMakeLists.txt 如下所示:

cmake_minimum_required (VERSION 3.8)

add_compile_options( "$<$<C_COMPILER_ID:MSVC>:/utf-8>" )
add_compile_options( "$<$<CXX_COMPILER_ID:MSVC>:/utf-8>" )

# 如果支持,请为 MSVC 编译器启用热重载。
if (POLICY CMP0141)
  cmake_policy(SET CMP0141 NEW)
  set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
endif()

project("vs2022_cmake_sampleOnnxMNIST_test")

include_directories( "D:/install/tensorRT/TensorRT-8.6.1.6/samples/common" 
					 "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6/include" )


link_directories( "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.6/lib/x64" )

link_libraries( 	nvinfer 
					nvinfer_plugin
					nvonnxparser
					nvparsers
					cudnn
					cublas
					cudart  )


# 将源代码添加到此项目的可执行文件。
add_executable("vs2022_cmake_sampleOnnxMNIST_test" 
				"vs2022_cmake_sampleOnnxMNIST_test.cpp" 
				"getopt.c" 
				"logger.cpp"
				)

if (CMAKE_VERSION VERSION_GREATER 3.12)
  set_property(TARGET vs2022_cmake_sampleOnnxMNIST_test PROPERTY CXX_STANDARD 20)
endif()

8. 编译、执行成功:

  • 24
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值