0. 前言
- 主要内容:
- C++编译环境(MinGW)的安装
- VSC常用插件。
- 运行第一个C++程序。
- 版本:
- VSC 1.36.0
- cpptools 0.24.0
1. MinGW
- 目标:本地安装编译器MinGW,并设置系统路径。
- 相关资料:
- 自己的安装思路(图片均来自上面的安装教程):
- 第一步:从官网下载安装管理器。
- 第二步:在安装管理器中选择需要下载的部分。
- 第三步:将MinGW的bin文件夹添加到系统路径。
- 第四步:验证,在cmd中尝试使用
gcc -v
命令。
2. VS Code 插件
- VSC的安装基本步骤:
- 第一步:从官网下载并安装VSC。
- 第二步:安装相关插件。
2.1. C/C++
- 作用:C/C++开发环境。
- 官方出品的 cpptools。
- 参考资料:
- 官网文档中有描述如何使用该插件。
2.2. Chinese (Simplified) Language Pack for Visual Studio Code
- 作用:中文翻译。
- 所有其他语言支持都是通过插件的形式完成。
2.3. Code Runner
- 作用:简单的运行程序(最新版本其实也没那么有用了)。
- 参考资料:作者的知乎文章
- 为什么要使用Code Runner:没有非常方便的编译并运行程序的功能。
- 其实最新版本有了,可以通过
C/C++: build and Debug Active File
实现。 来执行,即在tasks.json
中配置label
为g++.exe build active file
的task。
- 其实最新版本有了,可以通过
- 使用方式:
- 通过右键 ->
Run Code
运行程序。 - 通过下图中的小图标。
- 可以在
F1
中运行命令。
- 通过右键 ->
- 原理(不确定):查了下,应该是根据
code-runner.executorMap
配置执行命令。- 以c++为例,就是
cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt
- 以c++为例,就是
- 其他设置:
Run In Terminal
:勾选后,每次调用Run Code
都可以。Save All Files Before Run.
2.4. Settings Sync
- 作用:通过Github Gist同步VSC的配置。
- 参考资料:
- 使用:
- 和以前有些不同。点击上传配置后出现如下界面。
- 这时我们应该点击
login with github
,然后在上传的时候选择我们所需的gist,如下图:
2.5. background
- 可以在配置中设置本地图片以及css样式。
- 举例:
- 需要注意的是本地文件格式。
customImages
也可以通过互联网获取。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19"background.useDefault": false,
"background.customImages": [
"file:///E:/photo/Fubuki/0be4612442a7d933fff9e281a34bd11372f00141.jpg"
],
"background.useFront": false,
"background.style": {
"content": "''",
"pointer-events": "none",
"position": "absolute",
"z-index": "99999",
"right": "200px",
"width": "100%",
"height": "100%",
"background-position": "0% 0%",
"background-size": "cover",
"background-repeat": "no-repeat",
"opacity": 0.1,
"object-fit": "scale-down",
},
3. 编写并运行C++程序
3.1. 综述
- 参考资料:
- VSC中主要通过三个配置文件来对C++程序的编写、运行、调试进行配置:
c_cpp_properties.json
:主要作用是配置IntelliSense。launch.json
:主要作用是帮助调试。tasks.json
:主要作用是构建应用程序。
- 对于给定下面的 hello world 代码进行测试(代码来自官方文档)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using namespace std;
int main()
{
vector<string> msg {"Hello", "C++", "World", "from", "VS Code!"};
for (const string& word : msg)
{
cout << word << " ";
}
cout << endl;
}
3.2. IntelliSense
- 作用:代码编写过程中的一些作用:
- code completion。一般输入字符串时直接会有显示。如果没有显示,可以通过
ctrl+space
来获取代码补全信息。 - quick info。可以在代码补全时,输入
ctrl+space
来获取简要信息。 - parameter info。在输入完成一个方法后,会显示参数信息。
- code completion。一般输入字符串时直接会有显示。如果没有显示,可以通过
c_cpp_properties.json
- 官方Github解释
- 如何生成该文件?
- 直接在
.vscode
中新建文件。 - 通过
>C/C++: Edit Configurations (JSON)
自动创建。
- 直接在
- 主要参数就是
configurations
中的compilerPath
(好像与使用的STL有关)和includePath
(自定义头文件路径)。 - 举例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29{
"env" : {
"myDefaultIncludePath": [
"${workspaceFolder}",
"${workspaceFolder}/include"
],
"myCompilerPath": "/usr/local/bin/gcc-7"
},
"configurations": [
{
"name": "Mac",
"intelliSenseMode": "gcc-x64",
"includePath": [ "${myDefaultIncludePath}", "/another/path" ],
"macFrameworkPath": [ "/System/Library/Frameworks" ],
"defines": [ "FOO", "BAR=100" ],
"forcedInclude": [ "${workspaceFolder}/include/config.h" ],
"compilerPath": "E:\\Software\\MinGW\\bin\\g++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"compileCommands": "/path/to/compile_commands.json",
"browse": {
"path": [ "${workspaceFolder}" ],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
3.3. 构建应用程序
在VSC中构建应用程序,需要创建
tasks.json
。- 感觉VSC中一个重要概念就是tasks。
- Tasks官方简介:在VSC中使用一些工具(这些工具原本需要在命令行中设置、运行)。
如何创建?
- 直接在
.vscode
中新建文件。 - 通过
Tasks:Configure Tasks
->Create tasks.json
->Others
来创建。
- 直接在
tasks.json
举例:- 使用这个执行的就是
g++ -g -o helloworld helloworld.cpp
命令。 group
中的内容,应该就是指的是通过Tasks: Run Build Task
执行,即ctrl+shift+b
。- 在这个官方文档中有少量下面参数的介绍。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-o",
"${fileBasenameNoExtension}",
"${fileBasenameNoExtension}.cpp"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
- 使用这个执行的就是
运行:
- 当拥有
group
为test
的配置时,可以通过Tasks: Run Test Task
来运行程序。 - 当拥有
group
为build
的配置时,可以通过Tasks: Run Build Task
来运行程序。
- 当拥有
3.4. 调试程序
参考资料:cpptools文档 - Configuring launch.json for C/C++ debugging
如果要调试,就需要建立
launch.json
。如果新建
launch.json
的方法:- 直接创建文件。
- 通过下图新建。但好像其实选哪个都会新建
launch.json
文件。
MinGW GDB调试的
launch.json
举例:- 注意
preLaunchTask
,这个名字对应的是tasks.json
中的label
。 - 如果不设置
preLaunchTask
,则需要在调试前自己构建项目(即创建*.exe
文件)。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "E:\\Software\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
- 注意
调试界面:
- 通过
F5
进行调试。
- 通过