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

相关推荐
世转神风-29 分钟前
qt-kits-警告:No C++ compiler,无法正常解析工程项目.pro文件
开发语言·c++
王老师青少年编程38 分钟前
csp信奥赛C++标准模板库STL(12):C++ STL 中的 next_permutation详解
c++·stl·排列·标准模板库·csp·信奥赛·permutation
深盾科技1 小时前
融合C++与Python:兼顾开发效率与运行性能
java·c++·python
代码村新手2 小时前
C++-入门
开发语言·c++
我待_JAVA_如初恋2 小时前
idea创建MavenJavaWeb项目以后,包结构缺java
java·ide·intellij-idea
神舟之光2 小时前
VSCode编译运行C/C++程序问题及解决方法
开发语言·c++
坐怀不乱杯魂2 小时前
C++ STL unordered_map/set 实现
开发语言·c++
hetao17338372 小时前
2025-12-21~22 hetao1733837的刷题笔记
c++·笔记·算法
呱呱巨基3 小时前
Linux 进程控制
linux·c++·笔记·学习
罗湖老棍子3 小时前
最小函数值(minval)(信息学奥赛一本通- P1370)
数据结构·c++·算法··优先队列·