主要参考了https://blog.csdn.net/wa0jixu/article/details/104490659https://www.zhihu.com/question/30315894、以及https://blog.csdn.net/callinglove/article/details/112283022?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242

一、VSCode安装

官网下载:https://code.visualstudio.com/
下载安装即可,注意需要勾选“添加到环境变量”选项。

二、VSCode设置

1. 语言设置

VScode默认为英文。使用Ctrl+Shift+P,显示出配置显示语言的选项,然后选择安装中文简体。中文(简体)语言包安装完成后按提示重启即可。
image.png
image.png

2. C++必须的安装包

在应用商店中搜索并依次安装C/C++插件,跟安装语言包的方法一样。
推荐安装并启用以下插件:
【C/C++支持】C/C++
【程序运行环境】Code Runner
【自动补齐】C++ Intellisense
【Clang编译环境】C/C++ Clang Command Adapter
【调试工具】Native Debug
【静态检查工具】C/C++ Advanced Lint

三、构建C/C++编译环境

VSCode只是一个编辑器,本身并不支持编译运行功能。因此我们需要通过插件来配置编译运行环境,本文选用MinGW-W64+Clang环境。

1. 安装Clang

网址:https://releases.llvm.org/download.html
这里按电脑配置选择,我选择Pre-Built Binaries: Windows(64bit)(.sig),最终下载LLVM-11.0.0-win64.exe。
下载完成后安装,安装时选择“Add LLVM to the system PATH for all users”。安装完成后可能会提示“MSVC integration install failed”。这是因为Clang默认使用msvc工具链,但我们采用了MinGW,因此无视即可。装完后Win+R打开cmd,运行clang -v观察到以下结果则安装成功。
image.png
image.png

2. 安装MinGW

地址:https://sourceforge.net/projects/mingw-w64/files/
我选择了mingw-w64-install.exe,点击exe,安装在了E:\softwares\mingw-w64\。
image.png
直接运行,需要配置以下五个参数,注意别搞错了:
Version:指定版本号,按需选择,没有特殊需求就用最新版本;
Architecture:按操作系统来选,64位系统选择x86_64,32位系统选择i686;
Threads:设置线程标准,可选posix或win32;
Exception:设置异常处理标准,x86_64可选seh或sjlj,i686则为dwarf或sjlj;
Build revision:构建版本号,默认只有一个0,如果有多个选最大的即可。
之后一路next安装。
然后,把E:\softwares\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin添加到环境路径中。一路确定。
image.png

最后,装完后Win+R打开cmd,运行gcc -v,观察到以下结果,则安装成功。
image.png

四、VSCode工程配置

至此,VSCode下C/C++运行环境就搭建好了。
在某个文件夹新建能够在未来一直储存C++的文件夹。例如,D:\vscode c++。
然后,重启VSCode。打开“vscode c++”这个文件夹,在里面新建.vscode的文件夹。再在.vscode中新建两个.json文件——launch.json和tasks.json。代码如下。
image.png

1. launch.json

  1. {
  2. // 使用 IntelliSense 了解相关属性。
  3. // 悬停以查看现有属性的描述。
  4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
  5. "version": "0.2.0",
  6. "configurations": [
  7. {
  8. "name": "gcc.exe build and debug active file", // 配置名称,会显示在启动配置的下拉菜单中
  9. "type": "cppdbg", // 配置类型,这里只能为cppdbg
  10. "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
  11. "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 待调试的可执行程序路径
  12. "args": [], // 程序启动时的传参,按需求填即可
  13. "stopAtEntry": true, // 是否在main入口处打断点,一般选true
  14. "cwd": "${workspaceFolder}", // 调试程序时的工作路径
  15. "environment": [], // 环境变量设置
  16. "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
  17. "MIMode": "gdb", // 指定调试器,可以为gdblldb。但windows下没有预编译好的lldb,还是老老实实gdb
  18. "miDebuggerPath": "C:\\TDM-GCC-64\\bin\\gdb.exe", // gdb的调用路径,\\为转义
  19. "setupCommands": [
  20. {
  21. "description": "为 gdb 启用整齐打印",
  22. "text": "-enable-pretty-printing",
  23. "ignoreFailures": false // 调试时是否忽略失败,当然要false
  24. }
  25. ],
  26. "preLaunchTask": "gcc.exe build active file" // 调试开始前要执行的动作,一般为编译文件。此处内容应与tasks.jsontaskName一致
  27. }
  28. ]
  29. }

2. tasks.json

  1. {
  2. "version": "2.0.0",
  3. "tasks": [
  4. {
  5. "label": "gcc.exe build active file", // 任务名称,与launch.jsonpreLaunchTask相对应
  6. "type": "shell",
  7. "command": "gcc", // 如果用MinGW,编译cgcc,编译c++用g++
  8. "args": [ // 编译参数
  9. "${file}",
  10. "-o", // 指定输出文件名,不加该参数则默认输出a.exe
  11. "${fileDirname}/${fileBasenameNoExtension}.exe", // 注意这里用/标识目录而不是\\
  12. "-g", // 支持gdb调试
  13. "-Og", // -Og 是在gcc 4.8版本引入的,按照源码自动确定优化等级,基本相当于没有优化
  14. "-Wall", // 开启额外的编译警告
  15. "-static-libgcc", // 静态链接
  16. "-fcolor-diagnostics",
  17. "--target=x86_64-w64-mingw", // tasks.json的默认targetmsvc,不加这一条就会找不到头文件
  18. "-std=c11" // c++最新标准为c++1zc++17C语言最新标准为c11,可根据需要自行修改
  19. ],
  20. "group": {
  21. "kind": "build",
  22. "isDefault": true // 设为false则可做到一个tasks.json配置多个编译指令
  23. },
  24. "presentation": {
  25. "echo": true,
  26. "reveal": "always", // 设置是否在“终端”中显示编译信息,可以为alwayssilentnever。没说的,always
  27. "focus": false,
  28. "panel": "shared" // 不同的文件的编译信息共享一个终端面板
  29. },
  30. "problemMatcher": { // 编译错误输出配置
  31. "owner": "cpp",
  32. "fileLocation": [
  33. "relative",
  34. "/"
  35. ],
  36. "pattern": {
  37. "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", // 正则表达式,用于描述在“问题”栏中显示的信息。
  38. "file": 1,
  39. "line": 2,
  40. "column": 3,
  41. "severity": 4,
  42. "message": 5
  43. }
  44. }
  45. }
  46. ]
  47. }

五、测试

再次重启VSCode。在新建一个文件夹,用于储存.cpp文件,文件夹名字为cpp_source。里面再新建一个demo.cpp。
image.png

#include <iostream>
#include <vector>
#include <string>

int main(int argc, char *argv[])
{
    std::cout << "Hello World" << std::endl;
    std::vector<std::string> cities{"JiNan", "BeiJing", "ShenZhen"};

    for (auto& city : cities)
    {
        std::cout << city << std::endl;
    }

    return 0;
}

然后运行。结果如下。
image.png

以上为安装VSCode教程。