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

相关推荐
肆忆_1 天前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++
不想写代码的星星1 天前
虚函数表:C++ 多态背后的那个男人
c++
端平入洛3 天前
delete又未完全delete
c++
端平入洛4 天前
auto有时不auto
c++
哇哈哈20215 天前
信号量和信号
linux·c++
多恩Stone5 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
蜡笔小马5 天前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost
超级大福宝5 天前
N皇后问题:经典回溯算法的一些分析
数据结构·c++·算法·leetcode
weiabc5 天前
printf(“%lf“, ys) 和 cout << ys 输出的浮点数格式存在细微差异
数据结构·c++·算法
问好眼5 天前
《算法竞赛进阶指南》0x01 位运算-3.64位整数乘法
c++·算法·位运算·信息学奥赛