VSCode配置编译和调试CMake工程代码

配置介绍主要以Linux系统为例,调试工具选择gdb

在某些情况下程序莫名其妙挂掉,这时候通过打日志等一些方式更难可以快速定位问题的位置,所以这个时候往往需要调试来定位问题比如利用调式中的调用堆栈查看程序挂掉的具体位置

配置步骤:配置CMake生成任务json→配置运行和调式json→执行编译并调式

配置CMake生成任务json

首先需要VSCode先一个配置json文件,点击终端选择

之后将下面的配置json代码替换到tasks.json中

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "shell",
			"label": "cmake",
			"command": "cmake",
			"args": ["-DCMAKE_BUILD_TYPE=Debug", ".."],
			"options": {
				"cwd": "/root/projects/CCVOD/CCVODServer/build"
			},
		},
		{
			"label": "make",
			"type": "shell",
			"command": "make",
			"args": [],
			"options": {
				"cwd": "/root/projects/CCVOD/CCVODServer/build"
			},
		},
		{
			"label": "build",
			"dependsOn":["cmake", "make"]
		},
	],
}

重要配置参数说明

  • cwd 指定该脚本的工作目录,这里建议使用绝对路径

  • command 指定要执行的任务

  • args 指定执行任务后面的参数

  • dependsOn 执行依赖项,表示当用户执行该任务时所依赖需要提前执行的任务(自动执行)

按照自己的项目把上面的配置写好就可以进行CMake编译了

执行过程和输出会在下面状态栏中显示

配置运行和调式json

配置完上面的工作就可以使用VSCode来编译代码了,但是还不能进行代码运行和调试

首先还是让VSCode生成一下调试运行json配置,点击运行和调试然后点击创建launch.json文件,之后就会得到一个默认的配置文件

下面的json配置代码是适用于Linux下gdb调试

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "code debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "/root/projects/CCVOD/CCVODServer/bin/Debug/httpServer.out",
            "args": ["-DB", "dropDB"],
            "stopAtEntry": false,
            "cwd": "/root/projects/CCVOD/CCVODServer/src/",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build",
            "miDebuggerPath": "/usr/bin/gdb"
        }
    ]
}

重要配置参数说明

  • program 要执行的可执行文件路径,还是建议使用绝对路径

  • args 执行程序后面带的参数,没有可以不写

  • preLaunchTask 指定开始前需要执行的任务,这里指定了上面的构建编译任务

  • miDebuggerPath 调试工具所在路径

上面的两步全部配置完后就可以测试是否可以使用了

在代码中打个断点,按下F5运行程序,如果断点成功触发就证明上面的配置没有问题

需要注意的是,只有debug模式生成的可执行文件才可以进行调式,release版本是不能进行调试的

最后介绍一个CMake语法,可以将不同模式下的输出文件生成到不同的目录下

SET(RELEASE_OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin/Release)   # release模式文件输出路径
SET(DEBUG_OUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin/Debug)       # debug模式文件输出路径

# 设置 Debug 和 Release 构建类型的不同输出路径
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${DEBUG_OUT_PATH})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${DEBUG_OUT_PATH})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${DEBUG_OUT_PATH})

set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${RELEASE_OUT_PATH})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${RELEASE_OUT_PATH})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${RELEASE_OUT_PATH})

到这里关于VSCode配置CMake工程编译和调试就介绍完了

感谢观看学习,大佬们多多指点,愿明天的自己会感谢当下的努力!!!!

### 如何在 VSCode配置 g++ CMake 进行项目编译 #### 安装必要的扩展工具 为了能够在 Visual Studio Code (VSCode) 中使用 g++ 编译器以及通过 CMake 来管理构建流程,需要先安装一些必备组件: - **C/C++ 扩展**:提供 IntelliSense、调试支持等功能。 - **CMake Tools 扩展**:简化了基于 CMake 的项目的操作。 确保已经安装了 `g++` 编译器,并将其路径添加到了系统的环境变量中以便于命令行调用[^1]。 #### 设置工作区文件夹结构 创建一个新的文件夹作为项目根目录,在其中建立源代码子文件夹用于存放 `.cpp` 文件其他资源。另外还需要放置一个名为 `CMakeLists.txt` 的文本文件来定义项目的构建逻辑[^2]。 ```plaintext my_project/ ├── src/ │ └── main.cpp └── CMakeLists.txt ``` #### 编写 CMakeLists.txt 文件 编辑 `CMakeLists.txt` 文件以指定最低版本需求并描述目标二进制或库的位置等信息。对于简单的控制台应用程序来说,可能只需要几行基本指令即可完成配置[^3]。 ```cmake # 指定最小兼容的 CMake 版本号 cmake_minimum_required(VERSION 3.10) # 设定项目名称 project(MyProject VERSION 1.0 LANGUAGES CXX) # 添加可执行文件及其对应的源文件列表 add_executable(${PROJECT_NAME} src/main.cpp) ``` #### 配置 JSON 文件 为了让 VSCode 更好地理解如何处理这个特定类型的工程,可以在 `.vscode` 文件夹下创建两个重要的 JSON 文件——`settings.json` `launch.json`。前者用来定制化开发体验;后者则负责启动调试会话时的行为设定[^5]。 `.vscode/settings.json` ```json { "terminal.integrated.shell.windows": "cmd.exe", "C_Cpp.default.compilerPath": "/path/to/g++.exe" } ``` 注意替换 `/path/to/g++.exe` 成实际安装位置上的完整路径字符串。 `.vscode/tasks.json` ```json { "version": "2.0.0", "tasks": [ { "label": "build project with cmake", "type": "shell", "command": "cmake --build ./build --config Debug", "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"], "detail": "Generated task to invoke the compiler using cmake." } ] } ``` `.vscode/launch.json` ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "/usr/bin/gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build project with cmake", "internalConsoleOptions": "openOnSessionStart" } ] } ``` 以上配置假设正在 Windows 上运行 MinGW 或者类似的 GNU 工具链。如果是 Linux 用户,则应调整 `"miDebuggerPath"` 字段指向本地 GDB 可执行文件的实际路径。 #### 开始构建与调试 现在可以通过按 F5 键触发预设的任务来进行完整的构建过程(如果尚未存在的话),接着自动进入调试模式。也可以手动打开终端输入相应的命令如 `cmake -S . -B build && cmake --build build` 来单独测试整个流水线的工作情况[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Lu ‍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值