VSCode配置C++环境(Windows篇)

VSCode配置C++环境(Windows篇)
苏丙榅1. 本地软件安装
1.1 MinGW 编译套件
GCC官方提供的编译套件不能直接在 windows 上使用,推荐的解决方案是使用 MinGW。
MinGW 提供了一套简单方便的 Windows 下的基于 GCC 程序开发环境,并且 收集了一系列免费的 Windows 使用的头文件和库文件。它整合了 GNU 的工具集,特别是 GNU 程序开发工具,如经典
gcc,g++,make等。
MinGW 是完全免费的自由软件,它在 Windows 平台上模拟了 Linux 下 GCC 的开发环境,为 C++ 的跨平台开发提供了良好基础支持,为了在 Windows 下工作的程序员熟悉 Linux 下的 C++ 工程组织提供了条件。
如果小伙伴本地安装了Qt,并且使用的编译套件也是 MingW,那么就不需要在安装了,配置一下环境变量即可。
Qt环境变量配置如果本地没有,那就必须老老实实的下载一个了,下载地址如下:
MinGW官方下载地址: https://osdn.net/projects/mingw/
 
第一步, 运行下载到本地的 MinGW 下载器,准备编译套件的下载。
 
第二步: 给即将下载的编译套件指定存储路径
 
第三步: 下载前的准备。
 
第四步: 开始下载,将下图中的两项标记为下载,
 
勾选完成后,在菜单栏中选择Installation -> Apply Changes:
 
弹出如下对话框,选择Apply。然后耐心等待,直至安装成功,即可关闭此界面。注意,整个安装过程中可能会提示某些组件下载失败,先关闭提示对话框,等下载完成之后, 按照最后一步处理一下即可。
 
最后一步,如果安装过程中某个包下载失败了可进程如下操作:
在菜单栏中选择
Installation -> Apply Changes,再次进行安装就可以了。可以通过
MinGW Installation Manager安装界面中的All Packages选项查看没有安装成功的软件包。
 
1.2 CMake
CMake是一个跨平台的项目构建工具,它可以用简单的语句来描述所有平台的编译过程并输出各种各样的makefile或者project文件(如 Linux 的 Makefile 或 Windows Visual C++ 的 projects/workspaces)。最后调用编译器按照构建文件规则编译整个项目。。现在越来越多的开源项目都支持使用 CMake 进行项目构建,如果想要在 VSCode 搭建的C++开发环境中实现类似IDE的一键编译或者一键调试的效果,就可以依赖 CMake 来解决这个问题。
CMake 官方下载地址: https://cmake.org/download/
 
根据自己本地操作系统选择对应的版本,将绿色版 CMake 下载到本地,并解压缩到自己认为合适的目录中即可。
1.3 设置环境变量
不论是使用 MinGW 下载器下载到本地的编译套件,还是下载到本地的绿色版的 CMake 在对应的目录中都有一些可执行程序,默认这些可执行程序是不能被全局访问的,如果想要在任意目录中访问这些目录中的可执行程序,就需要将这些目录设置到系统的环境变量中,具体设置方式如下:
- 找到 MinGW 和 CMake 的本地目录(以我本地为例) - 1 
 2- 1. MinGW 编译套件可执行程序对应的本地路径:C:\MinGW\bin 
 2. CMake 的本地路径:C:\cmake\bin
- 依次 查看图文演示- 右击计算机(此电脑) -> 属性 -> 高级系统设置 -> 环境变量,- 用户级别的环境变量优先级大于系统级别的环境变量。 - 根据自己的需求,找到对应的 - Path, 双击,在弹出的对话框中- 添加第一步中找到的两个- 路径:
- 验证环境变量是否配置成功了:打开一个终端 ( - win + r输入- cmd)- windows 中打开终端的方式很多,在此之上列举了其中一种。 
 
2. vscode 插件安装
在 vscode 中编写 C/C++ 程序并搭建一个类似 IDE 的编译调试环境一共需要安装三个插件:C/C++, CMake, CMake Tools。首先需要基于 vscode 的扩展面板搜索插件名,找到插件之后,直接安装就可以。
- C/C++
- CMake
- CMake Tools
3. 单文件编译和调试
vscode 下单文件的编译调试只需要在本地部署好编译套件,并安装 C/C++插件就可以使用了,使用方法如下:
3.1 编译
vscode可以以目录为单位处理文件,因此我们首先创建一个目录,然后用vscode打开这个目录,在这个目录对应的工作区添加一个源文件,编写程序:
 
代码编写完毕之后,找到菜单栏的终端 ->新终端打开一个新的终端窗口,这个终端窗口就是Windows自带的 power shell,支持Linux 命令。
 
在得到的 Power Shell窗口中使用 gcc 编译源文件:
| 1 | 编译c源文件 | 
 
这样在打开的工作区目录中就生成了一个叫做 app.exe的可执行程序。
3.2 调试
vscode的工具栏面板中有一个调试按钮,点击这个按钮,然后根据提示,将launch.json文件创建出来,这个文件中记录了一些用于调试的配置信息。(可以按照下图来操作也可以点按钮 运行和调试)
 
在窗口顶部弹出的窗口中选择C++(GDB/LLDB)
 
选择编译器,因为在我本地有两个版本的 MinGW 编译套件,所有有两个选项,小伙伴根据自己配置的路径选择对应的编译套件中的编译器即可。如果源文件是.cpp, 此处显示的是 g++.exe ...................。
 
如果vscode 加载不到编译器,会弹出如下窗口,需要选择 MinGW 套件中的 GCC 编译器,不要选 VS里边的编译器。
 
如果操作成功了,最后会看到生成了一个叫做 .vscode的目录,  并且里边有两个文件launch.json和tasks.json
 
如果生成的.vscode目录中只有launch.json没有tasks.json,是因为没有加载到工作区的源文件,需要执行如下操作:
- 删除生成的.vscode目录
- 先打开一个工作区的源文件,再重新执行添加launch.json的操作。
接下来 vscode 会自动生成调试的配置文件,并初始化。最后在需要调试的代码行前面(行号之前)用鼠标设置断点或者把光标放到某一行使用快捷键F9添加断点。
设置好断点之后,使用快捷键F5,或者通过菜单项运行 -> 启动调试就可以启动调试了,程序就会停到设置的断点位置,调试窗口中就可以显示变量信息了。如果是无断点调试可以使用快捷键Ctrl+F5。
 
4. 多文件编译
如果一个项目中有多个源文件,进行项目编译有两种方式:通过命令编译, 通过CMake编译,后者是全自动化也不需要 gcc 基础,推荐使用。为了更贴近实际项目场景, 下面演示一个多目录场景的案例, 目录结构如下:
 
4.1 基于命令编译项目
首先打开一个终端(现有终端或者新的终端都可以),在 sort目录执行如下命令编译源文件
| 1 | C++程序编译 | 
 
这样就生成了可执行程序 sort.exe。
4.2 基于CMake编译
首先在源文件所在的工作区目录中添加一个CMake文件叫做 CMakeLists.txt,在这个文件中添加两句话
| 1 | project(SortMake) | 
- project():设置项目名称,参数可以随意指定
- aux_source_directory(dir VAR): 搜索- dir目录下所有的源文件,并将结果列表存储在变量- VAR中
- add_executable(target src): 指定使用源文件- src,生成可执行程序- target,- ${变量名}是取变量的值
- include_directories(headDir): 设置包含的头文件目录
在vscode中先配置cmake, 按快捷键 ctrl+shift+p,在窗口中搜索 CMake configure,选中这个配置项
 
如果vscode 加载不到编译器,会弹出如下窗口,需要选择 MinGW 套件中的 GCC 编译器,不要选 VS里边的编译器。
 
CMake 配置完成之后, 会在vscode 工作区生成一个 build目录
 
打开终端,在终端中执行以下三个命令:
- 进入到生成的 - build目录- 1 - cd build 
- 通过 - cmake工具基于编写的- CMakeLists.txt生成- MakeFile文件- 1 - cmake .. - 小贴士: - build目录也可以删了再自己创建,如果是这样操作的并且电脑上已经安装了 vs 执行这一步会出错,需要使用 (cmake -G “MinGW Makefiles” ..)来代替(cmake ..),该操作只需要做一次,后边就可以直接使用- cmake ..了,但是没有必要脱了裤子放屁,直接使用vscode创建的 build 目录就行了。
- 使用 - make工具通过生成的- makefile文件构造项目。Linux中的构建工具叫- make, 32位的MinGW中的构建工具叫做- mingw32-make.exe, 64位的MinGW中的构建工具叫做- mingw64-make.exe, 当前使用的构建工具是32位的。最终可执行程序就生成到- build目录中了。- 1 - mingw32-make.exe 
 Makefile快速入门
Makefile快速入门
最后看一下工作区的文件列表
 
5. 多文件调试
5.1 生成调试配置文件
不通过CMake进行可执行程序调试也是可以的,比较麻烦,还需要通过命令重新生成可用于调试的可执行程序,再修改配置文件,步骤比较繁琐,这里讲一下如何基于CMake进行配置并调试。
第一步: 先将
launch.json文件创建出来(一定要先切换到显示项目源文件的那个 Tab 页,不然 tasks.json创建不出来)。
 
第二步: 在窗口顶部弹出的窗口中选择
C++(GDB/LLDB)
 
选择g++编译器,因为在我本地有两个 MingW环境,所以有两个 g++.exe 选项(选择哪个都行)
 
多文件项目还不能自动链接并编译项目, 需要手动修改配置文件, 因此会弹出这个对话框:
 
5.2 launch.json
| 1 | { | 
这个配置文件中需要修改的项不太多, 介绍一下需要修改的配置项:
- program: 要调试的可执行程序的路径,里边可以使用一些宏,宏的外部加- ${}表示取值- ${fileDirname}:文件目录的名字,- launch.json对应的目录名就是- .vscode
- ${fileBasenameNoExtension}:不带扩展名的文件名,文件名是main函数对应的那个文件
- ${workspaceFolder}:工作区目录
 
- preLaunchTask:调试项目前要执行的任务,- C/C++: g++.exe 生成活动文件是- tasks.json中的一个任务- 通过执行这个任务生成了program对应的可执行文件
 
- 通过执行这个任务生成了
5.3 tasks.json
我们需要将原来 tasks.json中的内容清楚,使用下面的模板进行替换:
| 1 | { | 
下面解释一下文件中需要修改的一些设置项:
- cwd:进入到工作区的子目录- build中- 1 
 2
 3- "options": { 
 "cwd": "${workspaceFolder}/build/"
 },
- label: 标题, 可随意取名, 这里叫做- cmake
- command: 要执行的命令是- cmake .., 作用是使用 cmake 生成- makefile文件- 1 
 2
 3
 4
 5
 6
 7
 8- { 
 "label": "cmake",
 "type": "shell",
 "command": "cmake",
 "args": [
 ".."
 ]
 }
- label: 标题, 可随意取名, 这里叫做- make
- command: 要执行的命令是- mingw32-make.exe作用是使用 MinGW 编译套件中的这个工具基于- makefile构建当前项目- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10- { 
 "label": "make",
 "group":{
 "kind":"build",
 "isDefault":true
 },
 "command": "mingw32-make.exe",
 "args":[
 ]
 }
- label: 标题, 可以随意取名, 这里叫- Build my project。该名字需要作为- launch.json中- preLaunchTask配置项的值
- dependsOn: 需要执行的命令对应的- label- 1 
 2
 3
 4
 5
 6
 7- { 
 "label":"Build my project",
 "dependsOn":[
 "cmake",
 "make"
 ]
 }
5.4 修改配置文件
根据对 tasks.json的解释, 可以知道最终使用MinGW的构建工具mingw32-make.exe通过 cmake生成的makefile编译整个项目得到的可执行程序存储到了工作区的build目录中,因此需要修改launch.json的program的value值。
另外 launch.json中 preLaunchTask配置项的值也需要和 tasks.json中最后一个 label的值相同。
第一处修改:
 
第二处修改:
 
恭喜:
如果各位小伙伴已经走到这一步,那么你的vscode已经和 IDE 无异了,每次使用快捷键F5(启动调试)或者Ctrl+F5(非调试模式运行),都可以重新编译项目并生成可以调试的可执行程序,我们可以快乐的写代码了。
 
 
 
 
 















