【知乎转载】vscode 搭建 C/C++ 编译环境教程(windows)

vscode 搭建 C/C++ 编译环境教程(windows)

特别注意

文章中凡是涉及到路径的地方,请修改成自己的路径,特别是那几个 .json 文件,很多网友问为何按照你的教程,还是出问题,大部分都是没修改成自己的路径

PS文件夹和文件名不要用中文,很多网友因为使用中文名的文件夹,导致出现了 Unable to start debugging.Unexpected GDB output from command 这种错误

如果想用 vscode 搭建 C 语言编译环境,参考的两个 json 文件,如本文最后。

下载安装

下载安装 vscode

下载 vscode,链接Visual Studio Code,如下图示。

官网下载 windows 版本 vscode

安装 vscode,如下图示。

同意协议

根据自己的喜好,选择安装位置,建议不要安装在 C 盘,如下图示。

安装位置选择

选择开始菜单文件夹,直接默认并点击下一步即可,如下图示。

选择开始菜单文件夹

选择附加任务,可以直接默认,然后下一步,也可选择附加快捷方式,这样桌面上就有 vscode 的图标,使用起来直接在在桌面上打开即可,也可选择其他下面的前两项,这样打开工程代码时,鼠标右键选择通过 Code 打开,非常方便,建议这几个选项都选中,如下图示。

选择附加任务

说明:若上一步选择了其他下面的前两项,打开工程代码时,直接鼠标右键即可,如下图示。

鼠标右键,打开项目代码

准备安装,直接默认,选择安装即可,如下图示。

准备安装

安装完成,直接点击完成即可,如下图示。

安装完成

下载编译器 mingw

下载 mingw,链接x86_64-win32-seh,如下图示。

下载 x86_64-win32-seh

解压下载的 x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z,并将其下面的文件夹 mingw64,拷贝一份存放自己想放的位置,如下图示。

解压下载的文件,将 mingw64 存放到相应位置(根据个人习惯)

环境配置

在电脑左下角的搜索框中,输入编辑系统环境变量,如下图示。

编辑系统环境变量

点击编辑系统环境变量,进入系统属性,再点击环境变量,如下图示。

系统属性配置

打开环境变量界面,点击下方的系统变量中的 Path,选择编辑,如下图示。

系统变量配置

编辑环境变量,点击新建,如下图示。

编辑环境变量

打开 mingw64 文件夹,并打开其中的 bin 文件夹,将路径拷贝并放到上一步新建的位置,如下图示。

新建环境变量

然后再不断确定,如下图示。

确定新建的环境变量

确定环境变量

确定环境变量

确认环境配置是否成功

在搜索栏中输入 cmd,进入 dos 界面,然后再输入 gcc -v/g++ -v,看是否有如下输出,如果没有,则需要重启一下 pc,让环境配置生效,如下图示。

确认环境是否配置成功

安装 vscode 扩展

打开 vscode,点击下图中的 EXTENSIONS,并输入 C/C++,点击 Install,如下图示。

安装 C/C++ 扩展

如果不习惯英文,同样在扩展中,输入 Chinese,并安装,如下图示。

安装中文(简体)插件

安装完中文(简体)插件后,点击 vscode 界面右下角的 Change Language and Restart,如下图示。

修改 vscode 语言显示并重启

重启后,vscode 显示变为中文版,如下图示,然后关闭 vscode。

修改语言后的显示

配置 json 文件

新建一个存放代码的文件夹,然后鼠标右键,选择通过 Code 打开,如下图示。

vscode 打开文件

点击下图框框中的图标,新建一个 cpp 文件,如下图示。

新建 cpp 文件

随便输入一段可运行的 cpp 代码并保存,如下图示。

输入一段可运行的 cpp 代码

配置编译器

按下 F1 或者按下 Ctrl+Shift+P 调出面板,输入 C/C++,选择编辑配置(UI),如下图示。

C/C++ 扩展配置

此时,vscode 界面左上角的 SHENZHEN 文件夹下会出现一个 .vscode 文件夹,如下图示。

配置 .vscode 文件夹下的文件

在 C/C++ 配置界面下的编译器路径,选择适合自己的,如果是 C 语言,则选择 gccC++ 则选择 g++,编译器路径是之前存放 mingw 的路径,如果当前显示的不是,则需要修改成之前存放 mingw 的路径,由于作者是用 C++,所以选择 g++,如下图示。

编译器路径配置

在当前界面下,将 IntelliSense 模式,设置成 gcc-x64(legacy),将 C 标准设置为 c11, C++ 标准设置为 c++17,如下图示。

IntelliSense 模式设置

C/C++ 标准设置

此时,c_cpp_properties.json 文件内容如下:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "D:/Program Files/mingw64/bin/g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

配置构建任务

回到 test.cpp 界面,按下 F1 或者按下 Ctrl+Shift+P 调出面板,输入 tasks,选择任务:配置默认生成任务,然后选择 C/C++:g++.exe 生成活动文件,如下图示。

配置默认生成任务

选择 C/C++:g++.exe 生成活动文件

此时 .vscode 文件夹中多出一个 tasks.json 文件,如下图示。

生成 tasks.json 文件

tasks.json 文件内容如下:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: g++.exe 生成活动文件",
			"command": "D:/Program Files/mingw64/bin/g++.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "D:/Program Files/mingw64/bin"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: \"D:/Program Files/mingw64/bin/g++.exe\""
		}
	]
}

配置调试设置

回到 test.cpp 界面,按下 F1 或者按下 Ctrl+Shift+P 调出面板,输入 debug,选择调试:开始调试,然后再选择 C++ (GDB/LLDB),如下图示

调试:开始调试

C++ (GDB/LLDB)

点击 vscode 左上角运行下的创建 launch.json 文件,然后再选择 C++ (GDB/LLDB ) ,如下图示。

创建 launch.json 文件

此时,生成了一个 launch.json 文件,如下图示。

launch.json 文件

将 launch.json 文件修改成如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:/Program Files/mingw64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
        }
    ]
}

验证可行性

回到 test.cpp 界面,在 return 前面打个断点,然后按下 F5 进行调试,如下图示,这样就说明没问题了。

调试

补充

为了防止在以非调试模式运行模式下,出现运行结果窗口闪屏(一闪而过的)现象,在 return 前面,可以添加如下代码,如下所示。

system("pause"); 

防止运行结果窗口闪屏 1

当然,也可以输入如下代码,防止窗口闪退。

getchar();

getchar() 函数的作用是从计算机终端(一般为键盘)获取一个无符号字符。getchar() 函数只能接收一个字符,其函数值就是从输入设备获取到的字符。

防止运行结果窗口闪屏 2

进一步补充

如果想用 vscode 搭建 C 语言编译环境,步骤同上,不同的是 json 文件,launch.json 文件如下:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "gcc.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:/mingw64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: gcc.exe 生成活动文件"

        }
        
    ]
}

tasks.json 文件如下:

{
	"version": "2.0.0",
	"tasks": [
		{
			"type": "cppbuild",
			"label": "C/C++: gcc.exe 生成活动文件",
			"command": "D:\\mingw64\\bin\\gcc.exe",
			"args": [
				"-fdiagnostics-color=always",
				"-g",
				"${file}",
				"-o",
				"${fileDirname}\\${fileBasenameNoExtension}.exe"
			],
			"options": {
				"cwd": "${fileDirname}"
			},
			"problemMatcher": [
				"$gcc"
			],
			"group": {
				"kind": "build",
				"isDefault": true
			},
			"detail": "编译器: D:\\mingw64\\bin\\gcc.exe"
		}
	]
}

注意请把两个 json 文件中涉及到路径的地方,修改成自己的

例如:“miDebuggerPath”:“D:/mingw64/bin/gdb.exe”。

编辑于 2024-01-26 16:12・IP 属地广东

「真诚赞赏,手留余香」