CMake学习--Window下VSCode 中 CMake C++ 代码调试操作方法

目录

一、背景知识

在软件开发过程中,调试是不可或缺的一环。它帮助开发者定位代码中的错误,理解程序运行时的状态,从而提高代码质量和开发效率。CMake 是一个跨平台的构建工具,可以生成不同平台下的构建文件,如 Makefile 或 Visual Studio 解决方案等。VSCode(Visual Studio Code)是一款功能强大的轻量级代码编辑器,支持多种编程语言,具有丰富的扩展功能。结合 CMake 和 VSCode 进行 C++ 代码调试,可以充分利用两者的优点,打造高效的开发环境。

二、使用方法

(一)安装扩展

  1. 打开 VSCode。

  2. 点击左侧的扩展视图(扩展图标是一个四四方方的拼图块)。

  3. 在搜索框中输入"C/C++"。在搜索结果中找到由微软发布的"C/C++"扩展,点击"安装"按钮。

  4. 安装CMake

(二)创建 CMake 项目

  1. 新建一个文件夹CMake_DEBUG作为项目根目录。
  2. 新建build目录,用于构建和编译。
  3. 新建main.cpp
  4. 新建 CMakeLists.txt 文件。

(三)编写代码

main.cpp

cpp 复制代码
#include <iostream>



int main() {

    std::cout << "Hello, World!" << std::endl;
    return 0;
}

(四)配置 CMakeLists.txt

cmake 复制代码
cmake_minimum_required(VERSION 3.10)

project(HelloWorld)



set(CMAKE_CXX_STANDARD 11)



add_executable(${PROJECT_NAME} main.cpp)

代码目录如下:

此时利用cmake指令,应该能正常编译成功。打开vscode终端,

shell 复制代码
cd build



cmake ..



cmake --build .

(五)生成构建文件

现在只能编译成功,还是不能调试程序。怎样调试呢?

点击左边栏调试按钮,创建launch.json,选择c/c++:(Windows)启动。

系统默认的launch.json如下:

修改后的launch.json如下:

json 复制代码
{

    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(Windows) 启动",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/Debug/HelloWorld.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "console": "externalTerminal"
            "miDebuggerPath": "D:\\DevKits\\Qt\\Tools\\mingw810_64\\bin\\gdb.exe",
        }
    ]
}

需要修改programmiDebuggerPath修改为自己的代码路径,其他默认即可。

(六)开始调试

跟visual studio 2022调试环境基本一样,断点,快捷键,F5,F10,F11等等。

三、总结

通过以上步骤,我们成功地在Windows环境下 VSCode 中配置了 CMake C++ 项目,并实现了代码调试。这种开发方式充分利用了 CMake 的构建能力和 VSCode 的便捷性,为 C++ 开发者提供了一个高效、灵活的开发环境。在实际开发中,可以根据项目需求进一步扩展和优化配置,以满足更复杂的开发场景。

相关推荐
我先去打把游戏先25 分钟前
ESP32学习笔记(基于IDF):ESP32连接MQTT服务器
服务器·笔记·单片机·嵌入式硬件·学习·esp32
R-G-B3 小时前
【25】MFC入门到精通——MFC静态文本框 中字符串 连续输出 不覆盖先前的文本 换行输出
c++·mfc·mfc静态文本框输出字符串·mfc静态文本框连续输出字符串·mfc静态文本框换行输出字符串
deng-c-f4 小时前
Linux C/C++ 学习日记(29):IO密集型与CPU密集型、CPU的调度与线程切换
linux·学习·线程·cpu·io密集·cpu密集
四谎真好看5 小时前
Java 黑马程序员学习笔记(进阶篇18)
java·笔记·学习·学习笔记
洋洋的笔记5 小时前
银行测试学习计划
学习
FFZero16 小时前
【C++/Lua联合开发】 (二) Lua调用C++函数
c++·junit·lua
Allan_20256 小时前
数据库学习
数据库·学习
报错小能手6 小时前
linux学习笔记(43)网络编程——HTTPS (补充)
linux·网络·学习
报错小能手6 小时前
linux学习笔记(45)git详解
linux·笔记·学习
CoderCodingNo7 小时前
【GESP】C++四级真题 luogu-B4068 [GESP202412 四级] Recamán
开发语言·c++·算法