当前位置: 首页 > article >正文

使用vscode MSVC CMake进行C++开发和Debug

使用vscode MSVC CMake进行C++开发和Debug

  • 前言
  • 软件安装
  • 安装插件
  • 构建
  • debuug方案一
  • debug方案二
  • 其他

前言

一般情况下我都是使用visual studio来进行c++开发的,但是由于python用的是vscode,所以二者如果统一的话能稍微提高一点效率。

软件安装

需要安装的软件如下:

软件说明
vscode必须
CMake必须
Microsoft Visual StudioVisual Studio带编译器,因此也必须下载,如果下载这个就要安装别的编译器
vcpkg包管理器,非必须

安装插件

首先需要安装vscode的插件,如图所示其中C/C++ Extension Pack包含了C/C++,C/C++ Themes和Cmake Tools。
在这里插入图片描述

构建

在写好.cpp文件和CMakeLists.txt后,配置好CMakePresets.json文件和CMakeUserPresets.json,可以在vscode中用快捷键ctrl+shift+p。然后输入cmake,在弹窗中先选择Select Configure Preset,选择在CMakeUserPresets.json设定好的预设,然后再选择Configure,就开始CMake的构建阶段。

若不清楚CMakeLists.txt,CMakePresets.json文件和CMakeUserPresets.json文件如何写以及如何设置,建议先根据教程学习CMake,等熟悉CMake后再查阅本教程。

在这里插入图片描述

debuug方案一

当安装了CMake Tools这个插件后,vscode左侧边栏会有显示,如下图所示
在这里插入图片描述
其中直接点debug,代码可以进入debug模式进行debug;而点击launch,代码就是直接运行不debug。

这种方法很方便,但是有一个缺陷,就是如果有在控制台打印内容的代码,这种方法在debug的时候无法在控制台中打印。

debug方案二

方案二稍微麻烦一点,但是能看到在控制台中打印的内容。

在根目录下创建.vscode文件夹,然后在.vscode文件夹中创建launch.json文件,文件中的内容参考CMake Tools教程中,当使用MSVC的时候拷贝如下内容:

{"version": "0.2.0","configurations": [{"name": "(msvc) Launch","type": "cppvsdbg","request": "launch",// Resolved by CMake Tools:"program": "${command:cmake.launchTargetPath}","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [{// add the directory where our target was built to the PATHs// it gets resolved by CMake Tools:"name": "PATH","value": "${env:PATH}:${command:cmake.getLaunchTargetDirectory}"},{"name": "OTHER_VALUE","value": "Something something"}],"externalConsole": true}]
}

然后点击右上角的小三角形
在这里插入图片描述
点击debug或者run都可以,然后再下一级界面中选择(msvc Launch),两个任选其一即可,这两个都代表刚刚在launch.json文件中设置的内容,至于为什么有两个我也不清楚,按理来说应该只有一个的。
在这里插入图片描述
然后即可进行debug或者run。

其他

在其他一些教程中,例如教程1,教程2中,都说要配置环境变量,其实他们说要配置环境变量其实是对应的上图中第一列C/C++: cl.exe build and debug active file这种debug方法。而我的方法是借用了CMake Tools这个插件,因此经过实测并不需要配置环境变量。

http://www.lryc.cn/news/2384972.html

相关文章:

  • C# AutoMapper对象映射详解
  • Keil5 MDK LPC1768 RT-Thread KSZ8041NL uIP1.3.1实现UDP网络通讯(服务端接收并发数据)
  • 提升开发运维效率:原力棱镜游戏公司的 Amazon Q Developer CLI 实践
  • 20250523-BUG-E1696:无法打开元数据文件“platform.winmd(已解决)
  • 职业规划:动态迭代的系统化路径
  • redisson-spring-boot-starter 版本选择
  • Docker run -v 的 rw 和 ro 模式_docker ro
  • CentOS相关操作hub(更新中)
  • @Column 注解属性详解
  • 基于 ESP32 与 AWS 全托管服务的 IoT 架构:MQTT + WebSocket 实现设备-云-APP 高效互联
  • unity在urp管线中插入事件
  • 前后端的双精度浮点数精度不一致问题解决方案,自定义Spring的消息转换器处理JSON转换
  • docker安装es连接kibana并安装分词器
  • 线性回归中涉及的数学基础
  • 如何计算VLLM本地部署Qwen3-4B的GPU最小配置应该是多少?多人并发访问本地大模型的GPU配置应该怎么分配?
  • PostgreSQL日常维护
  • Attu下载 Mac版与Win版
  • V2X协议|如何做到“车联万物”?【无线通信小百科】
  • 【zookeeper】--部署3.6.3
  • [测试_3] 生命周期 | Bug级别 | 测试流程 | 思考
  • 物联网(IoT)智能项目全景指南:技术构架、实现细节与应用实践
  • 【Go】1、Go语言基础
  • RabbitMQ ⑤-顺序性保障 || 消息积压 || 幂等性
  • java基础知识回顾1(可用于Java基础速通)考前,面试前均可用!
  • 云原生CICD-Tekton入门到精通
  • CMake跨平台编译生成:从理论到实战
  • MCP 协议传输机制大变身:抛弃 SSE,投入 Streamable HTTP 的怀抱
  • opencv 图像的平移和旋转
  • IDEA2025版本使用Big Data Tools连接Linux上Hadoop的HDFS
  • hysAnalyser特色的TS流编辑、剪辑和转存MP4功能说明