官网:《Using Mingw in Visual Studio Code》,本文稍做了简化,喜英文版可直接移步。
工具准备
首先应该准备如下工具:
- 安装对应版本的Visual Studio Code。
- 安装VS Code上的C++扩展:C++ extension for VS Code。
- 下载MinGW-w64,考虑到是外网资源,建议选择离线版本,在线安装比较慢,不太稳定。
4.将MinGW的bin目录添加至环境变量,本文为 D:MinGWmingw64bin
测试:输入控制台指令
gcc -v
上述步骤,基本准备工作结束。
创建 workspace
1.创建工作目录,可以通过控制台指令逐步创建,也可以自己建好文件夹:
本文为测试,在桌面创建了如下文件夹 (C:UsershaiDesktopVSCodeWorkhelloworld):
2.输入下述控制台指令,打开到指定文件夹,并在指定文件夹内打开VS Code:
cd C:UsershaiDesktopVSCodeWorkhelloworld
code .
3.执行快捷键 Ctrl+Shift+P 或者 在View菜单下,打开Command Palette...菜单,输入并选择 C/C++: Edit Configurations (JSON):
此时,会在工作路径下生成一个【.vscode】文件夹,并且文件夹内包含一个名为c_cpp_properties.json的脚本文件,如上图。此时,需要就上图中某些选项进行修改:
- 将"compilerPath"设置为MinGW相应目录,本文为:D:/MinGW/mingw64/bin/g++.exe
- "intelliSenseMode" 设置为 "gcc-x64"
- "includePath" ,关于该项,很多教程中给出了相应的设置方式,但是这个视具体情况而定,本文暂时不需要。
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "D:/MinGW/mingw64/bin/g++.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
创建 Build Task
这个相对简单,在与上述配置文件同目录下,可以自行创建一个名为tasks.json的文件,然后将下述代码拷入其中即可:
{
"version": "2.0.0",
"tasks": [
{
"label": "build hello world",
"type": "shell",
"command": "g++",
"args": [
"-g",
"-o",
"helloworld",
"helloworld.cpp"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
其他参数相对好理解,也不需要太过计较,下述几个参数可以注意一下:
- "label" 表示在VS Code Command Palette中显示的名字,可根据需要随意设定;
- "group"对象下的"isDefault"取true时,表示可通过快捷键Ctrl+Shift+B快速运行该task;
- 注意修改"args"中的参数,以匹配项目,其中第三项为可执行文件名称(helloworld.exe),第四项为源代码文件(helloworld.cpp)。
添加源代码文件
在工程目录下,本文为C:UsershaiDesktopVSCodeWorkhelloworld
添加名为helloworld.cpp文件,此名称与tasks.json中保持一致,具体代码如下:
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
cout << "Hello World!" << endl;
}
编译并生成exe
定位到tasks.json文件,使用快捷键Ctrl+Shift+B执行该文件,可创建成功。
此时在cpp文件同目录下,会生成名为 helloworld.exe 的可执行文件,与配置文件设置的文件名相同。
调试设置
定位到 helloworld.cpp 文件,按快捷键 F5, 选择 C++(GDB/LLDB), 然后选择 g++.exe build and debug active file
等待结束,会在【.vscode】文件夹下,自动生成一个名为"launch.json"的配置文件:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:MinGWmingw64bingdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++.exe build active file"
}
]
}
注意,本文的配置方式与官方在顺序上稍有区别,本文将"launch.json"放在最后,是因为在按快捷键Ctrl+Shift+B创建完成项目后,再创建的"launch.json"文件中,系统自动填充了 "miDebuggerPath" 和 "program" 等对象,不需要自行设定,保持默认即可。
stopAtEntry
是断点相关设置,一般设置为true。
运行程序
运行程序方式有很多,简单给出两种方式:
1.VS Code自带执行:在Debug菜单下选择 Start Without Debugging 或者快捷键 Ctrl+F5,可以简单预览结果。
设置断点时,可以选择 Start Debugging 或者快捷键 F5,可以进行简单的断点调试。
2.扩展工具:安装Code Runner扩展工具,完成后,直接在cpp中鼠标右键选择Run Code即可运行。
扩展和使用
上文中的初次配置可能稍微麻烦点,但是后续使用就简单的多了。
例如现在想另起一个工程目录,新建一个测试用例,那么只需要以下4步:
- 将【.vscode】文件夹整体拷入新的工程文件夹内 (包含c_cpp_properties.json, launch.json,tasks.json三个配置文件);
- 控制台打开到工程文件夹目录,并通过"code ."指令打开VS Code;
- 修改tasks.json中"tasks"对象下的 "label" 和 "args"参数;
- 执行。
其实tasks.json中的"label"对象如果不是必须的话,可以命名为一个通用的名字,如“build My Task”等,就可以略去每次都修改该参数了。
其他参数个人感觉也可以通过vs code中的 预定义变量 进行优化,通过系统自动获取名称或路径,以达到进一步简化扩展的目的,仅是一个想法,有兴趣的可尝试。
设置默认终端
因为测试程序也不太复杂,就选择了VS Code默认终端,但若习惯像visual studio中弹出终端,可以将 launch.json 中的 "externalConsole" 设置为 true,就可以实现了。
稍微调整了下代码,按 Ctrl+F5 执行结果如下图:
以上。
评论区各位前辈给出了许多好的解决方案,学到了很多,也扩展了个人思路,有些也是我一直感兴趣的工具,陆续会尝试使用,学无止境,感谢大家!