VSCode配置C++编译环境:从MinGW安装到tasks.json与launch.json调试全解析
配过VSCode写C的老手都知道这事儿看着简单真正跑通一次全流程——从新建文件到终端蹦出Hello World——中间隔着编译器路径、环境变量、任务配置三道坎。很多入门的朋友在B站跟着视频敲了半天最后卡在g不是内部或外部命令或者在调试时蹦出launch: program xxx does not exist心里那个崩溃我完全理解。这篇东西就是把我自己在VSCode上配置C编译环境的完整步骤、背后的原理、踩过的坑一次性讲清楚不管你是刚接触C的学生还是想把手头项目迁到VSCode的工程师照着走基本能跑通。这个环境适合谁写算法题、做课程设计、搞小工具的人都合适。它不像Visual Studio那么庞大启动快、界面清爽配合终端和快捷键写C的体验非常丝滑。接下来的内容我按环境选型→核心配置→实操流程→问题排查四层往下拆每一层都带上为什么这么做避免你只会照着抄、遇到问题就抓瞎。1. 环境准备与工具选型解析1.1 核心需求解析为什么是VSCode搭配C先解决一个基本认知问题VSCode本身只是一个编辑器它不具备编译能力。很多新手误以为装了VSCode就能直接运行C代码这是个误会。VSCode的工作模式是编辑器插件外部工具链代码编辑和语法高亮由编辑器负责真正的编译、链接动作由后台的编译器完成VSCode通过任务系统Task把编译器调用起来并把结果回显在终端里。这个模式跟Visual Studio这种一体化IDE是完全不同的思路IDE把所有环节都集成好你按一个按钮就行VSCode把每个环节拆开让你自己决定用哪个编译器、怎么编译换来的是轻量和灵活。理解这一点你就知道整个配置的核心就是两件事第一找到可用的C编译器第二告诉VSCode怎么调用它。后面所有配置都是围绕这两件事展开的。我推荐VSCode写C的原因很直接它比Visual Studio轻得多启动快、内存占用小写算法题或中小型项目非常舒服它的插件生态足够丰富代码补全、语法检查、调试、格式化一应俱全。当然如果你是做大型Windows桌面程序、依赖MSVC专有特性的项目那Visual Studio依然是更稳妥的选择这个后面在做编译器对比时会再说清楚。1.2 编译器选型Windows上的MinGW与MSVCLinux上的GCC既然编译交给编译器第一步就是把编译器准备好。Windows上最常用的两套方案是MinGW-w64和MSVC。MinGW-w64是GCC在Windows上的移植版使用GNU工具链g是它的编译入口。它的优点是配置简单、与VSCode任务系统配合顺滑、开源免费绝大多数入门教程和算法竞赛环境都基于它。安装方式有两种一种是下载压缩包后手动解压并把bin目录加入PATH另一种是用包管理器安装比如通过scoop执行scoop install mingw或者用MSYS2后在其终端里执行pacman -S mingw-w64-ucrt-x86_64-gcc后者维护起来更方便升级也省事。MSVC则是Visual Studio自带的编译器cl.exe是入口功能强大、与Windows API集成度最高尤其适合Windows桌面程序开发。但说实话真要单独把MSVC拉出来配VSCode需要处理环境变量脚本、路径这些细节比MinGW麻烦不少所以除非项目依赖MSVC专有特性否则入门阶段不建议单独折腾。Linux生态就简单一些系统自带或通过apt安装的GCC/G直接可用配置方式与MinGW几乎一致只是路径和环境变量略有差别。比如Ubuntu上执行sudo apt install g然后用g --version验证版本。我自己实测下来Windows入门首选MinGW-w64。装完之后把它的bin目录常见路径是C:\mingw64\bin加入系统PATH环境变量然后在VSCode终端里输入g --version能看到版本号就说明编译器就绪了。这一步很多教程没有强调清楚导致后面各种找不到编译器的报错。2. 核心配置详解插件、tasks.json与launch.json2.1 插件安装C/C扩展与配套工具编译器就绪之后回到VSCode里安装扩展。必装的是微软官方发布的C/C扩展扩展IDms-vscode.cpptools它提供语法高亮、智能感知IntelliSense、调试支持、代码格式化等功能。安装方法很简单在扩展面板搜索C/C认准发布者为Microsoft的那个安装后重启窗口即可。它算是整个VSCode C体验的基石缺了它就只有文本编辑功能写起代码很痛苦。对于入门阶段这个扩展就够用了。如果你经常写算法题我还会额外推荐C/C Extension Pack它把调试器、主题、格式化工具一次性打包安装省心。不过扩展并不是越多越好装多了会导致窗口加载变慢、误弹补全提示建议按需启用。还有几个值得一提的辅助插件Code Runner适合快速运行单文件脚本它能在右上角生成一个运行按钮点击就能编译并输出结果Better C Syntax和Include Autocomplete可以增强语法高亮和头文件路径补全项目稍微复杂后帮助明显。核心思想还是那句先装必须的其他等需要再补充。2.2 tasks.json配置让编译动作一键化tasks.json是VSCode的任务系统配置文件放在项目根目录的.vscode文件夹下。它的作用是把打开终端→输入g命令→编译→看结果这个过程封装成一个任务按快捷键就能执行。我直接给出我常用的配置模板{ version: 2.0.0, tasks: [ { label: build current file, type: cppbuild, command: g, args: [ -fdiagnostics-coloralways, -g, ${file}, -o, ${fileDirname}/${fileBasenameNoExtension}.exe ], options: { cwd: ${fileDirname} }, problemMatcher: [ $gcc ], group: { kind: build, isDefault: true }, detail: 使用 g 编译当前文件并生成同名exe } ] }这段配置的关键点command指定编译器为gargs里的-g表示生成调试信息这是后面调试的基础${file}表示当前打开的文件-o指定输出文件名为当前文件名去掉扩展名再加.exe。problemMatcher设为$gcc好处是编译错误会以问题面板的形式展示点击错误信息能直接跳到出错的代码行再也不用眯着眼睛在终端里找错误行号。这里有个使用习惯要提一下${file}是编译当前文件适合单个文件场景。如果你同时打开了多个C文件任务默认编译的是当前活动编辑区那个逻辑上没问题但你必须保证活动文件确实是你想编译的文件。2.3 launch.json配置调试器的正确接法编译能跑通之后调试是下一个刚需。launch.json配置调试器让F5能启动调试会话。同样放在.vscode文件夹下我的模板{ version: 0.2.0, configurations: [ { name: C/C Debug, type: cppdbg, request: launch, program: ${fileDirname}/${fileBasenameNoExtension}.exe, args: [], stopAtEntry: false, cwd: ${fileDirname}, environment: [], externalConsole: false, MIMode: gdb, miDebuggerPath: gdb, preLaunchTask: build current file, setupCommands: [ { description: Enable pretty-printing for gdb, text: -enable-pretty-printing, ignoreFailures: true } ] } ] }这里最关键的是program字段它指向编译生成的exe文件路径必须与tasks.json里-o输出的路径一致否则调试时找不到可执行文件。preLaunchTask关联到刚才的build任务这样按F5时先自动编译再启动调试一步到位。externalConsole设为false表示使用VSCode内置终端调试时直接在集成终端里输入输出如果你写的程序需要命令行交互可以设为true弹出系统黑框窗口但日常写作业调试内置终端更方便能看到输出和变量同时变化。注意launch.json与tasks.json里的文件名、路径变量务必保持绝对一致。我见过非常多新手改了程序文件名却忘了改配置里的输出路径导致编译失败或程序不存在的假象。记住一个原则所有文件路径都尽量用${变量}代替写死的路径换机器、换项目都不用改配置。3. 实操过程与编译运行全流程3.1 创建项目结构与第一个C文件准备好配置现在从头走一遍完整流程。首先新建一个文件夹作为项目目录比如D:\cpp-demo然后在VSCode里通过文件 → 打开文件夹方式打开它。千万别直接文件 → 新建文件然后保存到桌面就编译那样配置会乱套因为tasks和launch都是基于工作区文件夹解析路径的。在项目根目录新建.vscode文件夹把上面两个JSON文件放进去。再新建一个源文件main.cpp写下经典的测试代码#include iostream int main() { std::cout Hello, VSCode! std::endl; for (int i 0; i 5; i) { std::cout Line i std::endl; } return 0; }这一段代码故意多写了一个循环目的是一会儿验证断点调试的功能是否正常。写的时候你会注意到C/C扩展会提供智能感知输入std::cout时会有补全和参数提示这就是前面装扩展的回报。3.2 完整编译运行流程演示打开main.cpp按下CtrlShiftBmacOS上是CmdShiftB触发编译任务。正常情况下VSCode会启动集成终端滚动输出g的编译过程结束后在项目根目录生成main.exe文件。这一步如果报g不是内部或外部命令说明MinGW的bin目录没加进PATH或者添加环境变量后没有重启终端/VSCode。这是配置阶段最常见也最容易让人崩溃的问题解决办法在前面已经说过往PATH里补。编译成功后运行有两种方式。第一种是在集成终端直接输入./main.exeWindows下也可以直接输入main.exe。第二种是点击main.cpp编辑区域右上角的运行按钮如果装了Code Runner插件或按F5进入调试模式运行。我推荐入门阶段先习惯第一种终端方式因为它更接近真实开发场景——你以后在Linux服务器上开发也是这样操作而且能看到程序的退出码对排查问题有帮助。如果一切顺利终端里会依次输出六行内容第一行是Hello, VSCode!后面是Line 0到Line 4。到这一步你的VSCode已经是一个可以正常工作、编译、运行的C开发环境了。这里再补一个细节如果想要调试在main.cpp第6行循环那一行点击行号左侧会出现一个红点——断点。按F5启动调试程序会停在第一个断点上左侧面板展示局部变量的实时值顶部的调试工具栏可以控制单步执行、跳过、继续。单步执行的时候你会看到i从0一步步变成4这个体验比单纯看代码理解循环要深刻得多。3.3 多文件项目的编译组织方式单文件编译是基础但实际写代码很快会碰到多文件项目一个 main.cpp 调用另一个文件里的函数这时候用编译当前文件的策略就行不通了因为g只编译当前文件的话链接阶段找不到其他.cpp里定义的符号。举个最简单的例子项目里有 main.cpp、helper.h 和 helper.cpp 三个文件helper里有个add函数// helper.h #ifndef HELPER_H #define HELPER_H int add(int a, int b); #endif // helper.cpp #include helper.h int add(int a, int b) { return a b; } // main.cpp #include iostream #include helper.h int main() { std::cout add(3, 4) std::endl; return 0; }这时候tasks.json的args要改成同时传入多个源文件args: [ -g, ${workspaceFolder}/*.cpp, -o, ${workspaceFolder}/main.exe ]使用通配符*.cpp把所有源文件一起编译链接。这种写法简单直接适合小型项目。如果项目再大一点开始拆分目录、依赖第三方库就要引入CMake了。CMake不是VSCode的一部分但它能生成构建描述VSCode配合CMake Tools扩展可以做到图形化配置、一键构建。要不要上CMake我的建议是源文件超过三五个或者有头文件目录、第三方依赖时直接上CMake别手写g命令硬凑。手写命令不是不行但随着文件增多命令越来越长依赖关系越来越复杂你迟早会怀念一个cmake --build .就能搞定的日子。4. 常见问题与排查技巧实录4.1 高频报错速查表配置C环境过程中几乎每个人都会遇到下面这些报错。我把它们整理成一个速查表遇到直接对照解决错误现象根本原因解决办法g不是内部或外部命令MinGW不在PATH中把mingw64/bin加入系统环境变量PATH并完全重启VSCode错误main.exe: No such file or directory编译失败或输出路径不对在终端手动执行g命令看具体报错核对-o路径无法打开源文件iostream头文件搜索路径错误检查编译命令是否缺-I参数或是否安装了正确工具链IntelliSense找不到头文件C/C扩展的编译器路径配置错误CtrlShiftP打开C/C: 选择配置设置编译器路径为g调试时找不到gdb缺少GDB调试器确保MinGW安装包含gdb在launch.json的miDebuggerPath中指定gdb路径launch: program xxx does not existlaunch.json的program路径与编译输出不一致统一program与tasks.json里-o的路径这里重点说一下最后一条。出现does not exist最常见的原因其实是前一次编译失败旧exe被清理了新的没生成。所以遇到这个提示先别急着改launch.json先手动编译一遍确认main.exe文件真的存在于磁盘上再回头看路径对不对。很多人一看到这个错就以为是配置写错了改来改去结果发现只是上次编译打了个红叉而已。4.2 环境变量与路径问题排查环境变量的坑我单独拿出来讲因为它最隐蔽。很多新手添加PATH之后发现还是不行原因往往是添加之后没有重启VSCode或者VSCode的集成终端没有继承新环境变量。VSCode集成终端是在窗口启动时读取环境变量的你改了系统环境变量必须完全重启VSCode——不是关掉再打开窗口而是彻底退出进程再重新启动否则终端还是在旧的环境变量池里。这个问题让我曾经折腾了很久最后发现只是没重启干净哭笑不得。还有一个很经典的坑Windows下路径包含中文或空格。比如把项目放在D:\编程学习\c project这个路径在终端处理时可能出问题特别是有些工具的传参解析方式不支持空格。我的建议是项目路径、用户目录尽量使用纯英文小写不要带空格。C初学者在这个问题上栽跟头的概率不低甚至gdb调试时还会出现更奇怪的符号解析错误。4.3 实战避坑心得最后分享几条只有真正折腾过才会懂的体会。第一不要迷信一键配置脚本。网上有很多一键配置C环境的工具或脚本确实快但出了问题你完全不知道往哪里排查。我强烈建议至少手动配置一遍tasks.json和launch.json把每个字段搞明白。配置过程其实就是理解编译调试基本逻辑的过程后面遇到环境问题才能快速定位而不是重装一遍碰运气。第二学会看终端里真正的编译报错。很多新手遇到红色报错就慌把整个报错截图发群里问。其实编译器的报错信息非常有指向性它通常会告诉你错误发生的文件、行号、以及期望与实际的类型。比如error: cout was not declared in this scope基本就是忘写#include iostream或者没写using namespace std跟环境配置一点关系都没有。学会读报错的前三行比百度一小时都有用。第三善用${workspaceFolder}而不是写死绝对路径。硬编码路径的配置换个机器就废了。我在GitHub上见过不少新人提交的tasks.json里面全是C:\Users\Lenovo\Desktop这样的个人路径别人clone下来根本跑不了。用变量替代绝对路径是真实开发的基本素质也是避免换台机器就崩的最简单办法。同样的道理也适用于launch.json的program字段。第四点关于调试的学习路径如果你觉得gdb命令行不好用可以直接在VSCode调试界面操作。在断点停下后左侧的监视面板可以添加你想跟踪的表达式比如输入i就能实时看它的变化调用堆栈面板可以看到当前函数调用链条。这个可视化方式比命令行gdb友好得多也是C/C扩展最有价值的地方。我刚学的时候是一边看变量窗口一边理解函数调用的帮助非常大。最后验证环境是否就绪可以用一个最小的程序冒烟测试写一个只有#include iostream和main函数的文件编译运行成功后再往里加业务代码。如果这个最小程序都编译不过问题一定在工具链或配置如果这个能过、复杂的过不了那问题才在代码本身。用这个二分法排查比瞎折腾环境高效十倍。我个人在实际操作中的体会是VSCode配置C环境这件事本质上就两条主线第一条是把编译工具链准备好并接入PATH第二条是让tasks.json和launch.json精确反映你的编译与调试意图。把这两条线走通后面无论是写算法竞赛、课程设计还是参与小型项目都只是在这个骨架上叠加CMake和第三方库的问题。配置过一次之后再遇到新机器、新项目半小时内就能搭好环境这个时间投入非常值得。最后再分享一个小技巧遇到莫名其妙的环境问题先重启VSCode再重启电脑都不行再去翻配置——这个顺序能解决一半以上的玄学问题别问我怎么知道的。

相关新闻

MySQL my.ini配置全攻略:从定位文件到参数调优与排坑

MySQL my.ini配置全攻略:从定位文件到参数调优与排坑

很多人在Windows上装MySQL,输完mysql -uroot -p能进命令行,就以为大功告成。直到有一天产品说“把端口从3306改成3307”,或者DBA说“把慢查询日志打开”,又或者C盘快满了要把数据目录搬到D盘,这时候你才发现自己连my.i…

2026/10/4 3:18:30 阅读更多 →
TextForever:TXT文件合并、乱码修复与段落清洗全攻略

TextForever:TXT文件合并、乱码修复与段落清洗全攻略

简介:这是一款面向电子书阅读与文本编辑场景的轻量级工具,主要解决TXT文件合并、段落合并、分行等日常整理需求。内置HTML转TXT、编码转换(GB/GBK/Big5/Shift-JIS/Unicode)、文本替换、正则表达式、文件切分与文本提取等功能&…

2026/10/4 3:18:30 阅读更多 →
HTML Standard 常见问题全解析:Living Standard 设计理念、语法规范与 WHATWG 协作机制

HTML Standard 常见问题全解析:Living Standard 设计理念、语法规范与 WHATWG 协作机制

文档 【免费下载链接】html HTML Standard 项目地址: https://gitcode.com/gh_mirrors/ht/html 点击查看 免费下载 本文以 WHATWG HTML Standard 官方仓库(gh_mirrors/ht/html)中的 FAQ.md 为骨架,系统讲解现代 HTML 标准的开发模…

2026/10/4 3:18:30 阅读更多 →

最新新闻

计及电转气协同的虚拟电厂优化调度:碳捕集与垃圾焚烧的Matlab实现

计及电转气协同的虚拟电厂优化调度:碳捕集与垃圾焚烧的Matlab实现

1. 为什么要把电转气、碳捕集和垃圾焚烧装进同一个虚拟电厂先说个我自己的切身体会。去年我拿到一个园区级综合能源项目,里面刚好有垃圾焚烧电厂、风电机组、电转气装置,还有一套碳捕集系统。按常规思路,这几个东西是各干各的:垃圾…

2026/10/4 3:54:59 阅读更多 →
工厂网络常见故障处理:从PPT教案到实战排查路径

工厂网络常见故障处理:从PPT教案到实战排查路径

简介:这份PPT学习教案面向工厂网络运维人员、自动化工程师及网络初学者,聚焦工业现场网络故障的快速定位与处理。内容围绕工厂网络环境、常用网络命令、常见故障处理方法与总结四大模块展开,先讲解由接入设备、路由设备、交换设备构成的典型拓…

2026/10/4 3:54:59 阅读更多 →
从Greenlight学Go静态扫描器设计:正则规则引擎、反模式匹配与项目级去重实现思路

从Greenlight学Go静态扫描器设计:正则规则引擎、反模式匹配与项目级去重实现思路

从Greenlight学Go静态扫描器设计:正则规则引擎、反模式匹配与项目级去重实现思路 【免费下载链接】greenlight Pre-submission compliance scanner for the Apple App Store and Google Play. Scans code, privacy manifests, Android manifests, and IPA/APK/AAB b…

2026/10/4 3:54:59 阅读更多 →
蓝桥杯省赛DFS与回溯核心模板:剪枝技巧与实战题型全拆解

蓝桥杯省赛DFS与回溯核心模板:剪枝技巧与实战题型全拆解

准备蓝桥杯省赛,如果把所有算法按出现频率排个序,DFS与回溯绝对能进前三。不少同学一听到这两个词就觉得玄乎,觉得又是递归又是状态还原的,绕来绕去把自己绕晕。其实拆开了看,就是个“往下走到底,不行就回头…

2026/10/4 3:54:59 阅读更多 →
【转】理解文中重要句子的含义

【转】理解文中重要句子的含义

来源:《图解基础知识手册高中语文》 刘来刚主编 吉林大学出版社 P469 第一部分 论述类文本阅读版权归原作者所有,如有侵权请联系删除,谢谢!学习知识必须扎实掌握语文这一重要基础工具原文:所谓“文中重要句子”&#x…

2026/10/4 3:54:59 阅读更多 →
GMM聚类中BIC选K的实战指南与避坑手册

GMM聚类中BIC选K的实战指南与避坑手册

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 3:53:59 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →