前言

本教程旨在帮助不想使用vs,但是又想使用VScode的调试功能而不想手动编译的人,只能最低限度满足要求,很多地方还不完善,如不支持源代码在不同文件夹下编译,不包含CMake语法的教程,需要进阶操作请自行搜索CMake语法,

环境安装

安装和配置MinGw

安装Cmake

下载链接:https://cmake.org/download/

选择一个后缀为.msi的安装包下载,尽量选最上面的,比较稳定,如图

ababa

安装时记得勾选“Add CMake to the system PATH for all users”,这样就不用自己再配置环境变量了

安装后在cmd输入

1
cmake -version

验证是否安装成功

VSCode 环境

需要的插件有

  • C/C++

  • CMake

  • CMake Tools

    插件

CMake编写

手动编译

选择一个文件夹做工作区,在该文件夹下新建文件

1
CMakeLists.txt

输入以下内容

1
2
3
4
5
6
cmake_minimum_required(VERSION 3.0.0)  //指定使用的CMake的最低版本
project(h) //指定一个项目名称
SET(CMAKE_BUILD_TYPE "Debug") //指定为调试模式,这样就可以用VSC的调试功能了
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
aux_source_directory(. SRC_LIST) //前面的"."表示该目录下所有.cpp文件,把这些文件用"SRC_LIST"代替
add_executable(hi ${SRC_LIST}) // "hi"是生成的可执行文件名称,需要自己指定

保存后可能vscode会直接开始自动build,创建build文件夹,同时也可以看到可执行文件也已经生成在build文件夹下,如果没有自动build,在终端中输入如下命令:

1
2
3
4
mkdir build
cd build
cmake -G "Unix Makefiles" .. //将CMakeLists翻译为Makeflies
make //编译

之后可以看到

build

启用调试

在主程序的页面,按f5,选择gdb,如图(我已经配置过了这里是网图)

dubug

点击后会生成launch.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/hi.exe", //这里需要改成该项目自己指定的可执行文件名称
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "make" //这里修改为"make"
}
]

之后配置task.json文件复制粘贴如下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
"version": "2.0.0",
"options": {
"cwd": "${workspaceRoot}/build"
},
"tasks": [
{
"label": "cmake",
"type": "shell",
"command": "cmake",
"args": ["-G", "Unix Makefiles", "-DCMAKE_BUILD_TYPE=Debug", ".."]
},
{
"label": "make",
"group": {
"kind": "build",
"isDefault": true
},
"type": "shell",
"command": "make",
"args": []
}
]
}

之后就可以直接f5启用调试功能了

操作流程

先输入上述命令build(可以写个批处理文件执行),再按f5。

注意事项

CMakeLists.txt中指定的可执行文件名称与launch,json中所指定的必须相同

新建源代码后需要删除原来的build文件夹,重新build

待解决事项

  • 可执行文件名称若为中文,理论上可以用set来将中文名称设置成变量传入执行表,还未具体操作
  • 生成的可执行文件必须自己指定名称,而不能默认成主程序的名称
  • 在一个工作区下临时创建一个新程序(可能用来调试),必须在CMakeLists.txt中重新指定需要编译链接的文件