官网下载就可以了,免费的: https://code.visualstudio.com/
直接在左侧找到扩展按键,安装c++扩展包:
直接安装 https://sourceforge.net/projects/mingw-w64/files/
再把安装好的mingw加入系统环境变量:
验证是否安装成功:
新建测试文件:
#include
using namespace std;
int main()
{
cout << "hello world" << endl;
return 0;
}
点击以调试/非调试模式运行:
选GDB:
选g++:
这个时候就可以正常运行显示结果了,程序可以正常执行,调试、运行都可以。
但是细心的同学可以发现,在左侧文件此时多了两个文件:lauch.json、tasks.json。这是两个非常重要的文件,是整个开发的重点配置,需要好好了解清楚他们是干嘛的。
功能:用于添加gdb调试任务,运行可执行文件。
初始化生成:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 调用的exe名,要与tasks生成的exe名一致
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false, // // 决定输出是单独外部黑窗口显示,还是在IDE里终端黑窗口显示
"MIMode": "gdb",
"miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: g++.exe 生成活动文件"
// 此项命名需要与tasks.json中的label项命名一致,作用是每次调用launch时会先调用tasks.json,从而不用自己每次都ctrl+shift+b手动生成最新任务后,才能调用launch
}
]
}
【参数】
功能:相当于gcc编译步骤汇总,也可以调用makefile,最终生成可执行文件。
描述了需要调用什么命令来执行任务,相当于直接在命令行cmd中执行命令。对应到c++开发,就是程序构建的过程。
初始化生成:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件", // 需与lauch.json中"preLaunchTask"项命名一致
"command": "D:\\mingw64\\bin\\g++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe" // 输出exe名,要与launch中调用的program项命名一致
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
【参数配置】
lanch.json
中的preLaunchTask
所使用;g++
,gcc
这些构建命令,这里一半写系统的环境变量中的g++地址;关注上面的加黑的几个参数,配置好了一般不会有什么问题。
tasks.json里的label名字和launch.json中的preLaunchTask名字没对应上,导致编译后launch不到对应exe。
分析:tasks.json是编译,launch.json是运行exe,tasks.json在lanuch之前。tasks里的label一定要跟launch.json中的preLaunchTask名字对应一致。否则会报找不到gcc任务错误。