VS Code配置C/C++环境

1、安装 VS Code

官网下载安装包直接安装即可

https://code.visualstudio.com/

2、VS Code 插件

  1. C/C++

VS Code配置C/C++环境

  1. 彩虹括号

VS Code配置C/C++环境

  1. 汉化

VS Code配置C/C++环境

  1. Include Autocorrelete

VS Code配置C/C++环境

3、安装mingw-w64

在mingw-w64官网下载64位的mingw-w64离线包
https://sourceforge.net/projects/mingw-w64/files/?source=navbar
根据系统选择合适的安装包进行下载(win10_64位选择如图标签)

VS Code配置C/C++环境

可以直接下载文件压缩包(我是下载文件压缩包直接解压就可以用了)

4、配置计算机环境变量PATH

我的bin目录是:C:\mingw64\bin

把它加到环境变量中的PATH里去

VS Code配置C/C++环境

5、重启电脑、检验安装

重启电脑后,打开CMD,输入gcc -v查看是否安装正确

输入gcc -v的最后一行输出。版本要和你自己下的对应,例如64位要有x86_64和seh

VS Code配置C/C++环境

6、VS Code 配置运行环境

打开vscode,选择或新建一个空文件夹目录打开作为项目目录。
点击“文件”按钮,再点击“新建文件夹”按钮,并重命名为”.vscode”。
在该文件夹内,在点击“新建文件”按钮,建launch.jsonsettings.jsontasks.json三个.json文件。

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
25
{
"version": "0.2.0",
"configurations": [{
"name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": true, // 为true时使用单独的cmd窗口,与其它IDE一致;18年10月后设为false可调用VSC内置终端
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
"miDebuggerPath": "E:\\mingw64\\bin\\gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
}]
}

tasks.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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "Compile",
"command": "E:\\mingw64\\bin\\g++.exe", // 修改
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "E:\\mingw64\\bin" // 修改
},
"problemMatcher": [
"$gcc"
],
"group": "build"
},
{
"type": "shell",
"label": "C/C++: cpp.exe build active file",
"command": "E:\\mingw64\\bin\\cpp.exe", // 修改
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "E:\\mingw64\\bin" // 修改
},
"problemMatcher": [
"$gcc"
],
"group": "build"
},
{
"type": "shell",
"label": "C/C++: g++.exe build active file",
"command": "E:\\mingw64\\bin\\g++.exe", // 修改
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "E:\\mingw64\\bin" // 修改
},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
]
}

settings.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"files.defaultLanguage": "c", // ctrl+N新建文件后默认的语言
"editor.formatOnType": true, // 输入分号(C/C++的语句结束标识)后自动格式化当前这一行的代码
"editor.suggest.snippetsPreventQuickSuggestions": false, // clangd的snippets有很多的跳转点,不用这个就必须手动触发Intellisense了
"editor.acceptSuggestionOnEnter": "off", // 我个人的习惯,按回车时一定是真正的换行,只有tab才会接受Intellisense
// "editor.snippetSuggestions": "top", // (可选)snippets显示在补全列表顶端,默认是inline

"code-runner.runInTerminal": true, // 设置成false会在“输出”中输出,无法输入
"code-runner.executorMap": {
"c": "cd $dir && gcc '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=GBK && &'$dir$fileNameWithoutExt'",
"cpp": "cd $dir && g++ '$fileName' -o '$fileNameWithoutExt.exe' -Wall -g -O2 -static-libgcc -std=c++17 -fexec-charset=GBK && &'$dir$fileNameWithoutExt'"
// "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -std=c11 -fexec-charset=GBK && $dir$fileNameWithoutExt",
// "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt.exe -Wall -g -O2 -static-libgcc -std=c++17 -fexec-charset=GBK && $dir$fileNameWithoutExt"
}, // 右键run code时运行的命令;未注释的仅适用于PowerShell(Win10默认),文件名中有空格也可以编译运行;注释掉的适用于cmd(win7默认),PS和bash也能用,但文件名中有空格时无法运行
"code-runner.saveFileBeforeRun": true, // run code前保存
"code-runner.preserveFocus": true, // 若为false,run code后光标会聚焦到终端上。如果需要频繁输入数据可设为false
"code-runner.clearPreviousOutput": false, // 每次run code前清空属于code runner的终端消息,默认false
"code-runner.ignoreSelection": true, // 默认为false,效果是鼠标选中一块代码后可以单独执行,但C是编译型语言,不适合这样用

"C_Cpp.clang_format_sortIncludes": true, // 格式化时调整include的顺序(按字母排序)
}

工作区设置(可选)

1
2
3
4
5
6
7
{
"C_Cpp.errorSquiggles": "Disabled",
"files.associations": {
"stdlib.h": "c",
"time.h": "c"
}
}

7、运行测试代码

新建一个文件,run试试

1
2
3
4
5
6
7
#include <iostream>

int main()
{
std::cout << "Hello World!\n";
return 0;
}

8、 Code Runner编译运行

有两种方法:编辑区右上角小三角快捷键,在 Windows 和 Linux 下一般默认是 Ctrl + Alt + N

VS Code配置C/C++环境

小三角程序会在输出面板输出

VS Code配置C/C++环境

有个缺点是不能输入……所以要到设置页做一点轻微的改动:

VS Code配置C/C++环境

可以按图中勾上选项或去掉默认的勾最重要就是倒数第二个 Run In Terminal,勾上后插件会调用 VS Code 的内置终端并在其中运行程序,可以满足输入要求。

如果编译时要带参数,比如 -std=c++11 -Wall ,要编辑 Code Runner 的 "code-runner.executorMap",在用户设置改动以覆盖,比如改成:

1
2
3
"code-runner.executorMap": {
"c": "cd $dirWithoutTrailingSlash && gcc $fileName -o $fileNameWithoutExt.exe -std=c11 -Wall -lm && ./$fileNameWithoutExt.exe"
}

关于 $ 开头的参数是 Code Runner 插件的 定义,详见 Code Runner - Visual Studio Marketplacemarketplace.visualstudio.com

要使用 Debug 等功能,可以参考这篇文章:
VS Code 搭建 C/C++ 编译运行环境的三种方案​

里面介绍了三种方案来编译运行 C/C++

相关文章

  1. https://www.zhihu.com/question/30315894
  2. https://www.cnblogs.com/bpf-1024/p/11597000.html