win10下visual studio code安装及mingw C/C++编译器配置,launch.json和task.json文件的配置
2021.2.3更新
在work_space的.vscode文件夹里添加以下4个文件就完了,别用看下面哔哔了
1. c_cpp_properties.json
1 { 2 //C_Cpp_Properties.json是用于配置编译器环境的,包括启动器代号、位数(这些是自定义的)、编译选项、启动设置、编译模式等。 3 //includePath指向C/C++标准库、用户头文件所在位置。 4 //不需要CMake也可以直接编写C/C++ 5 "configurations": [ 6 { 7 "name": "Linux", 8 "includePath": [ 9 "${workspaceFolder}/**" 10 ], 11 "defines": [], 12 "compilerPath": "/usr/bin/clang", 13 "cStandard": "c11", 14 "cppStandard": "c++17", 15 "intelliSenseMode": "clang-x64" 16 } 17 ], 18 "version": 4 19 }
2. launch.json
1 { 2 // Use IntelliSense to learn about possible attributes. 3 // Hover to view descriptions of existing attributes. 4 // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 "version": "0.2.0", 6 "configurations": [ 7 { 8 "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示 9 "type": "cppdbg", // 配置类型,这里只能为cppdbg 10 "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加) 11 "program": "${fileDirname}/${fileBasenameNoExtension}.out", // 将要进行调试的程序的路径 12 "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可 13 "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,我一般设置为true 14 "cwd": "${workspaceFolder}", // 调试程序时的工作目录 15 "environment": [], 16 "externalConsole": false, // 调试时是否显示控制台窗口,一般设置为true显示控制台, 17 // 但是最新版cpptools有BUG,具体请看文末的注意 18 "internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧? 19 "MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但目前lldb在windows下没有预编译好的版本。 20 "miDebuggerPath": "gdb", // 调试器路径,Windows下后缀不能省略,Linux下则去掉 21 "setupCommands": [ // 用处未知,模板如此 22 { 23 "description": "Enable pretty-printing for gdb", 24 "text": "-enable-pretty-printing", 25 "ignoreFailures": false 26 } 27 ], 28 "preLaunchTask": "Compile" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应 29 } 30 ] 31 }
3. setting.json
1 { 2 "files.associations": { 3 "iostream": "cpp", 4 "array": "cpp", 5 "deque": "cpp", 6 "forward_list": "cpp", 7 "string": "cpp", 8 "unordered_map": "cpp", 9 "vector": "cpp" 10 } 11 }
4. tasks.json
1 { 2 // See https://go.microsoft.com/fwlink/?LinkId=733558 3 // for the documentation about the tasks.json format 4 // tasks.json这个文件是定义调试开始前要执行的任务,即(或者绝大多数是)编译程序, 定义了用于编译程序的编译器,所输出的文件格式,使用的语言标准等 5 "version": "2.0.0", 6 "tasks": [ 7 { 8 "label": "Compile", // 任务名称,与launch.json的preLaunchTask相对应 9 "command": "g++", // 要使用的编译器, C就写gcc(不指定路径的话就从你的环境变量Path里去找编译器) 10 "args": [ 11 "${file}", 12 "-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out 13 "${fileDirname}/${fileBasenameNoExtension}.out", 14 "-g", // 生成和调试有关的信息 15 //"-Wall", // 开启额外警告 16 "-static-libgcc", // 静态链接 17 "-std=c11" // C语言最新标准为c11,或根据自己的需要进行修改比如C++17 18 ], // 编译命令参数 19 "type": "shell", // 可以为shell或process,前者相当于先打开shell再输入命令,后者是直接运行命令 20 "group": { 21 "kind": "build", 22 "isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件,我这里不多提 23 }, 24 "presentation": { 25 "echo": true, 26 "reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never。具体参见VSC的文档 27 "focus": true, // 设为true后可以使执行task时焦点聚集在终端 28 "panel": "shared" // 不同的文件的编译信息共享一个终端面板 29 }, 30 //"problemMatcher": "$gcc" 31 } 32 ] 33 }
-------------------------------------------------------------------------------------------------------------------------------------------------更新分割线--------------------------------------------------------------------------------------------------------------------------------------------------
1. 下载并安装vs code
这个比较简单,略过。
2. 下载安装C/C++和中文插件
首先下载安装C/C++,就是下面这货
然后下载安装中文插件:
按提示重启vs code,之后按shift + ctrl + P打开命令行,输入 Configure Display Language进行语言设置,选择ZH-CN作为语言(我这个版本是直接显示出已安装的语言列表,直接进行选择就行了,但看其他人的版本有的要打开locale.json并编辑其中locale一项如下:“locale”: "zh-CN")
3. 下载并安装C/C++编译器
之前一直不了解gcc,g++,mingw这些东西,一直把前两个混淆,现在网上找了些资料如下:
https://www.cnblogs.com/oxspirt/p/6847438.html
https://blog.csdn.net/wjheha/article/details/77648729
这里我安装的是mingw(因为这个以前安装过,这里安装过程略),安装完之后在环境变量path中添加“安装目录\MinGW\bin”,以便vs code的插件能找到编译器所在位置,接下来就是看看怎么样能运行一个hello world了。首先创建一个项目文件夹,里面放cpp文件(注意路径最好不要带中文),你的hello_world.cpp就放在里面,打开cpp文件,点击左侧debug按钮,在按F5出现如下下拉列表,我这里选择C++(GDB/LLDB),
之后再出现这个下拉列表,我这里还是选择第一项,
这时系统会根据安装好的mingw自动生成配置好的launch.json文件,保存在工作文件夹的.vscode文件夹下,如下图
然后关键的一步来了,在externalConsole一项,将false改为true!!
然后切换回cpp文件,按F5,会弹出下面的提示,选择配置任务
之后又出现如下列表
这里需要选择和之前选择一样的选项,之前选择的是g++.exe build and debug active file,所以这里我仍然选择g++那一项,之后系统就会在.vscode文件夹下自动生成task.json文件如下,
这个文件无需任何更改。
再切换回cpp文件,再按下F5,发现已经可以调试了,生成了相应的exe文件
PS:路径和文件名不能带中文,否则各种出错
参考:
https://blog.csdn.net/a845717607/article/details/94756604
https://blog.csdn.net/bat67/article/details/81268581
https://www.cnblogs.com/ghjnwk/p/9806677.html
————————————————————————————更新分割线————————————————————————————————
经过这两天的摸索碰壁,终于搞清楚launch.json和task.json这两个文件如何配合工作了。。。。上面的说法是从网上找来的,并不正确。
在进行编译前,需要先配置好launch.json 和task.json两个文件,对launch.json的各关键项解释如下:
其中name一栏随便填写,在调试的时候会在界面的左下角以“name(work dir)”显示出来,如下图
而"externalConsole"一项则决定是否弹出外部黑窗的形式显示,如果选false的话就不会弹出黑窗,而是显示在界面下方的“调试控制台”一项中。
关键是prelaunchTask这一项,这里的内容要与task.json中的task的label一致!!如下图
在task.json文件中,每增加一个task,就会在task[]列表中多一个项,每个项都有如下字段:
其中command字段为编译器路径,注意这里如果选择g++.exe(例如上图),则无论是c文件还是cpp文件都可以编译生成可执行文件,如果选择的是gcc.exe则只能编译c文件,编译c++文件会出错!!
下面的cwd为编译器所在的位置,其他的保持默认就行。