CLion IDE用MSVC和cmake编译darknet(带GPU)

这个配置教程给用过pytorch,懂得深度学习代码的基本流程,但又不熟悉windows c++开发环境的宝子们使用。

安装CUDA,CUDNN

一般都有,不说了。注意上nvidia官网看一下显卡架构,后面要用,比如我的丽台M2000架构是52

下载Visual Stdio

目前官网下不到2017,只有2022,没关系,我们安装的时候勾选 MSVC v141 - VS2017 C++ x64/x86 生成工具

更改配置

打开x64 Native Tools Command Prompt for VS 2022 ,开始菜单里可找到

如果打开vs prompt,输入cl,默认是最新的那个msvc,最新的这个版本太高了,如果你编译会提示你需要的cuda版本需要大于12.4,我工作电脑不能装这么高的版本。我们需要更改msvc版本,换成之前勾选的141

找到C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools下有个VsDevCmd.bat的脚本,是vs prompt的启动脚本,需要在最后的exit /B 0前面添加以下内容。其中14.16.27023是你装的msvc版本。10.0.22621.0是windows kit的版本,注意看自己是不是。

bash 复制代码
set EXTERNAL_INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt
set INCLUDE=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\include;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include;C:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt;C:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt
set LIB=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\lib\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64
set LIBPATH=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\ATLMFC\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\lib\x64;C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\lib\x86\store\references;C:\Program Files (x86)\Windows Kits\10\UnionMetadata\10.0.22621.0;C:\Program Files (x86)\Windows Kits\10\References\10.0.22621.0;C:\Windows\Microsoft.NET\Framework64\v4.0.30319
set VCToolsInstallDir=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\
set VCToolsRedistDir=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Redist\MSVC\14.16.27012\
set VCToolsVersion=14.16.27023
set PATH=C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\%PATH%

这些内容是哪里看的?如果你使用clion自带的cmake编译cmakelists,会出现报错,如果熟练使用clion,你可以看到vs prompt打印了哪些默认的初始变量,这些全部都要修改。

如果你改成功了,是这样的

配置CLION选项

配置clion的cmake参数,toolchain选择visual stdio

cmake options需要添加以下内容,这里我没开OPENCV,因为没装,你装了可以删掉,注意了这里-DCMAKE_MAKE_PROGRAM一定要填vs的ninja,因为用clion的ninja找的是他自己的mingw,会爆cuda编译相关错误。

bash 复制代码
-DCMAKE_CUDA_ARCHITECTURES=52 -DENABLE_OPENCV:BOOL=OFF "-DCMAKE_MAKE_PROGRAM=C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe"

添加一下CMAKE_CUDA_COMPILER,这是nvcc路径,可以作为环境变量,也可以写进cmake options里

注意改一下toolchain /visual stdio的c compiler和c++ compiler,msvc要重选

运行Cmake和build project

打开clion的cmake,会弹出来,运行成功就是这样。

点击 build/build all visual stdio debug。成功就会在目录下生成darknet.exe

相关推荐
炸膛坦客2 小时前
单片机/C/C++八股:(二十)指针常量和常量指针
c语言·开发语言·c++
炸膛坦客4 小时前
单片机/C/C++八股:(十九)栈和堆的区别?
c语言·开发语言·c++
2401_831824965 小时前
代码性能剖析工具
开发语言·c++·算法
是wzoi的一名用户啊~5 小时前
【C++小游戏】2048
开发语言·c++
weixin_426689205 小时前
vscode C语言编译环境搭建(单个文件)
c语言·ide·vscode
Sunshine for you5 小时前
C++中的职责链模式实战
开发语言·c++·算法
qq_416018726 小时前
C++中的状态模式
开发语言·c++·算法
2401_884563246 小时前
模板代码生成工具
开发语言·c++·算法
2401_831920746 小时前
C++代码国际化支持
开发语言·c++·算法
m0_672703316 小时前
上机练习第51天
数据结构·c++·算法