当前位置: 首页 > 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这个插件,因此经过实测并不需要配置环境变量。

相关文章:

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

使用vscode MSVC CMake进行C开发和Debug 前言软件安装安装插件构建debuug方案一debug方案二其他 前言 一般情况下我都是使用visual studio来进行c开发的,但是由于python用的是vscode,所以二者如果统一的话能稍微提高一点效率。 软件安装 需要安装的软…...

C# AutoMapper对象映射详解

引言 在现代软件开发中,特别是采用分层架构的应用程序,我们经常需要在不同的对象类型之间进行转换。例如,从数据库实体(Entity)转换为数据传输对象(DTO),或者从视图模型&#xff08…...

Keil5 MDK LPC1768 RT-Thread KSZ8041NL uIP1.3.1实现UDP网络通讯(服务端接收并发数据)

作为服务端,嵌入式软件实现流程: [上位机A/B/C/...] ↓ UDP [uIP 协议栈接收] ↓ [udp_appcall()] |-> 复制数据 |-> 保存源IP/端口 |-> 推送到接收队列 …...

提升开发运维效率:原力棱镜游戏公司的 Amazon Q Developer CLI 实践

引言 在当今快速发展的云计算环境中,游戏开发者面临着新的挑战和机遇。为了提升开发效率,需要更智能的工具来辅助工作流程。Amazon Q Developer CLI 作为亚马逊云科技推出的生成式 AI 助手,为开发者提供了一种新的方式来与云服务交互。 Ama…...

20250523-BUG-E1696:无法打开元数据文件“platform.winmd(已解决)

BUG:E1696:无法打开元数据文件“platform.winmd(已解决) 最近在用VisualStudio2022打开一个VisualStudio2017的C老项目后报了这个错,几经周折终于解决了,以下是我用的解决方法: 将Debug从Win32改…...

职业规划:动态迭代的系统化路径

1. 底层逻辑:构建职业规划的3大支柱 1.1 价值观锚定 1.1.1 生涯幻游法 通过想象理想生活的场景,包括工作环境、时间分配、人际关系、经济状态等,明确自己内心真正渴望的生活和工作状态,为职业规划提供方向指引。 1.1.2 价值观筛选 使用「价值观筛选卡」从30个常见职业价值…...

redisson-spring-boot-starter 版本选择

以下是更详细的 Spring Boot 与 redisson-spring-boot-starter 版本对应关系,按照 Spring Boot 主版本和子版本细分: 1. Spring Boot 3.x 系列 3.2.x 推荐 Redisson 版本:3.23.1(最新稳定版,兼容 Redis 7.x&#xf…...

Docker run -v 的 rw 和 ro 模式_docker ro

一、前言 在使用 Docker 启动容器时,通常需要将宿主机的文件或目录挂载到容器中,以便于管理配置、持久化数据和调试日志。本篇博客将重点介绍 -v/--volume 参数的使用方式、挂载权限(rw 与 ro)的区别,以及如何通过 do…...

CentOS相关操作hub(更新中)

CentOS介绍: CentOS(Community Enterprise Operating System)是基于 Red Hat Enterprise Linux(RHEL)源代码编译的开源企业级操作系统,提供与 RHEL 二进制兼容的功能 完全兼容 RHEL,可直接使用…...

@Column 注解属性详解

提示:文章旨在说明 Column 注解属性如何在日常开发中使用,数据库类型为 MySql,其他类型数据库可能存在偏差,需要注意。 文章目录 一、name 方法二、unique 方法三、nullable 方法四、insertable 方法五、updatable 方法六、column…...

基于 ESP32 与 AWS 全托管服务的 IoT 架构:MQTT + WebSocket 实现设备-云-APP 高效互联

目录 一、总体架构图 二、设备端(ESP32)低功耗设计(适配 AWS IoT) 1.MQTT 设置(ESP32 连接 AWS IoT Core) 2.低功耗策略总结(ESP32) 三、云端架构(基于 AWS Serverless + IoT Core) 1.AWS IoT Core 接入 2.云端 → APP:WebSocket 推送方案 流程: 3.数据存…...

unity在urp管线中插入事件

由于在urp下,打包后传统的相机事件有些无法正确执行,这时候我们需要在urp管线中的特定时机进行处理一些事件,需要创建继承ScriptableRenderPass和ScriptableRendererFeature的脚本,示例如下: PluginEventPass&#xf…...

前后端的双精度浮点数精度不一致问题解决方案,自定义Spring的消息转换器处理JSON转换

在 Java 中,Long 是一个 64 位的长整型,通常用于表示很大的整数。在后端,Long 类型的数据没有问题,因为 Java 本身使用的是 64 位的整数,可以表示的范围非常大。 但是,在前端 JavaScript 中,Lo…...

docker安装es连接kibana并安装分词器

使用Docker部署Elasticsearch、Kibana并安装分词器有以下主要优点: 1. 快速部署与一致性 一键式部署:通过Docker Compose可以快速搭建完整的ELK栈环境 环境一致性:确保开发、测试和生产环境完全一致,避免"在我机器上能运行…...

线性回归中涉及的数学基础

线性回归中涉及的数学基础 本文详细地说明了线性回归中涉及到的主要的数学基础。 如果数学基础很扎实可以直接空降博文: 线性回归(一)-CSDN博客 一、概率、似然与概率密度函数 1. 概率(Probability) 定义:概率是描述…...

如何计算VLLM本地部署Qwen3-4B的GPU最小配置应该是多少?多人并发访问本地大模型的GPU配置应该怎么分配?

本文一定要阅读我上篇文章!!! 超详细VLLM框架部署qwen3-4B加混合推理探索!!!-CSDN博客 本文是基于上篇文章遗留下的问题进行说明的。 一、本文解决的问题 问题1:我明明只部署了qwen3-4B的模型…...

PostgreSQL日常维护

目录 一:基本使用 1.登录数据库 2.数据库操作 2.1列出库 2.2创建库 2.3删除库 2.4切换库 2.5查看库大小 3.数据表操作 3.1 列出表 3.2创建表 3.3复制表 3.4删除表 4.模式操作命令 4.1创建模式 4.2默认模式 4.3删除模式 4.4查看所有模式 4.5 在指定…...

Attu下载 Mac版与Win版

通过Git地址下载 Mac 版选择对于的架构进行安装 其中遇到了安装不成功,文件损坏等问题 一般是两种情况导致 1.安装版本不对 2.系统权限限制 https://www.cnblogs.com/similar/p/11280162.html打开terminal执行以下命令 sudo spctl --master-disable安装包Git下载地…...

V2X协议|如何做到“车联万物”?【无线通信小百科】

1、什么是V2X V2X(Vehicle-to-Everything)即“车联万物”,是一项使车辆能够与周围环境实现实时通信的前沿技术。它允许车辆与其他交通参与者和基础设施进行信息交互。通过V2X,车辆不仅具备“远程感知”能力,还能在更大…...

【zookeeper】--部署3.6.3

文章目录 下载解压创建data和logs配置文件1)创建目录并且编辑 zoo.cfg2)接下来将 node01 的 ZooKeeper 所有文件拷贝至 node02 和 node03。推荐从 node02 和 node03 拷贝4)最后 vim /etc/profile 配置环境变量,环境搭建结束。配完环境变量后 source /etc…...

[测试_3] 生命周期 | Bug级别 | 测试流程 | 思考

目录 一、软件测试的生命周期(重点) 1、软件测试 & 软件开发生命周期 (1)需求分析 (2)测试计划 (3)测试设计与开发 (4)测试执行 (5&am…...

物联网(IoT)智能项目全景指南:技术构架、实现细节与应用实践

目录 一、物联网项目的核心组成和发展方向 1. 核心组成 2. 发展趋势 二、系统设计的详细流程 1. 需求分析与方案规划 2. 硬件方案深度设计 3. 软件架构设计 4. 方案示意图(架构图) 三、关键技术深度剖析 1. 传感器及其接口技术 2. 嵌入式MCU选…...

【Go】1、Go语言基础

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言的特点 Go语言由Google团队设计,以简洁、高效、并发友好为核心目标。 具有以下优点: 语法简单、学习曲线平缓:语法关键字很少,且…...

RabbitMQ ⑤-顺序性保障 || 消息积压 || 幂等性

幂等性保障 幂等性(Idempotency) 是计算机科学和网络通信中的一个重要概念,指的是某个操作无论被执行多少次,所产生的效果与执行一次的效果相同。 应用程序的幂等性: 在应用程序中,幂等性就是指对一个系统…...

java基础知识回顾1(可用于Java基础速通)考前,面试前均可用!

目录 一、初识java 二、基础语法 1.字面量 2.变量 3.关键字 4.标识符 声明:本文章根据黑马程序员b站教学视频做的笔记,可对应课程听,课程链接如下: 02、Java入门:初识Java_哔哩哔哩_bilibili 一、初识java Java是美国 sun 公…...

云原生CICD-Tekton入门到精通

文章目录 一、Tekton介绍二、Tekton组件介绍三、执行流程四、安装Tekton管道五、安装Tekton Dashboard六、安装Tekton Cli七、运行单Task八、运行流水线九、在流水线中使用secret十、taskSpec、taskRef、pipelineRef、pipelineSpec使用pipelineRef与taskRef结合使用(推荐)pipel…...

CMake跨平台编译生成:从理论到实战

一、引言 在当今软件开发中,跨平台开发已成为常态。无论是需要在Windows、Linux、macOS等多操作系统上运行,还是在不同的硬件架构(如x86、ARM等)间部署,跨平台编译生成都是一个无法回避的关键问题。CMake,…...

MCP 协议传输机制大变身:抛弃 SSE,投入 Streamable HTTP 的怀抱

在技术的江湖里,变革的浪潮总是一波接着一波。最近,模型上下文协议(MCP)的传输机制就搞出了大动静,决定和传统的服务器发送事件(SSE)说拜拜,转身拥抱 Streamable HTTP,这…...

opencv 图像的平移和旋转

warpAffine函数讲解,图片可自行下载,也可用自己的图片 原图im 平移im_shifted 旋转im_rotated # 图像仿射变换 # 步骤: 读取图像 -> 创建仿射变换矩阵 -> 仿射变换计算 # 平移变换矩阵:一种写法,直接写死 # 旋转变…...

IDEA2025版本使用Big Data Tools连接Linux上Hadoop的HDFS

目录 Windows的准备 1. 将与Linux上版本相同的hadoop压缩包解压到本地 ​编辑2.设置$HADOOP HOME环境变量指向:E:\hadoop-3.3.4 3.下载hadoop.dll和winutils.exe文件 4.将hadoop.dll和winutils.exe放入$HADOOP HOME/bin中 IDEA中操作 1.下载Big Data Tools插件 2.添加并连…...