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

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

前言

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

软件安装

需要安装的软件如下:

软件 说明
vscode 必须
CMake 必须
Microsoft Visual Studio Visual 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这个插件,因此经过实测并不需要配置环境变量。

相关推荐
YLCHUP2 小时前
【思维&图论建模】题解:债权(debt)_图论_建模_思路转化_思维题目_C++算法竞赛
c++·笔记·算法·数学建模·贪心算法·深度优先·图论
xiaoye-duck2 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
思麟呀2 小时前
背包DP(01背包+完全背包)
c++·算法
旖旎夜光4 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
ShineWinsu4 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
俊俊几年的5 小时前
动态规划(Dynamic Programming)详解:从入门到 LeetCode Hot 100
linux·c++·算法·leetcode·嵌入式·动态规划·c
老歌老听老掉牙1 天前
案例 7:二维 Rosenbrock 函数最小值(香蕉函数)
c++·pso
Severus_black1 天前
【C++初阶】Stack、Queue算法题大练兵!
c语言·c++·算法·stl
xiaoye-duck1 天前
《C++ 项目:手写大模型接入 SDK》DataManager数据管理模块:SQLite持久化存储
开发语言·数据库·c++·sqlite
拼图2091 天前
VSCode 正则表达式使用指南
ide·vscode·正则表达式