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++ 开发者提供了一个高效、灵活的开发环境。在实际开发中,可以根据项目需求进一步扩展和优化配置,以满足更复杂的开发场景。

相关推荐
樱木Plus2 天前
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
c++
blasit4 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
肆忆_5 天前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++
不想写代码的星星5 天前
虚函数表:C++ 多态背后的那个男人
c++
端平入洛7 天前
delete又未完全delete
c++
端平入洛8 天前
auto有时不auto
c++
西岸行者9 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
哇哈哈20219 天前
信号量和信号
linux·c++
多恩Stone9 天前
【C++入门扫盲1】C++ 与 Python:类型、编译器/解释器与 CPU 的关系
开发语言·c++·人工智能·python·算法·3d·aigc
蜡笔小马9 天前
21.Boost.Geometry disjoint、distance、envelope、equals、expand和for_each算法接口详解
c++·算法·boost