VS Code(1) Win10下 C++ 环境

0. 前言

  • 主要内容:
    • C++编译环境(MinGW)的安装
    • VSC常用插件。
    • 运行第一个C++程序。
  • 版本:
    • VSC 1.36.0
    • cpptools 0.24.0

1. MinGW

2. VS Code 插件

  • VSC的安装基本步骤:
    • 第一步:从官网下载并安装VSC。
    • 第二步:安装相关插件。

2.1. C/C++

  • 作用:C/C++开发环境。
  • 官方出品的 cpptools。
  • 参考资料:

2.2. Chinese (Simplified) Language Pack for Visual Studio Code

  • 作用:中文翻译。
  • 所有其他语言支持都是通过插件的形式完成。

2.3. Code Runner

  • 作用:简单的运行程序(最新版本其实也没那么有用了)。
  • 参考资料:作者的知乎文章
  • 为什么要使用Code Runner:没有非常方便的编译并运行程序的功能。
    • 其实最新版本有了,可以通过 C/C++: build and Debug Active File 实现。 来执行,即在tasks.json中配置labelg++.exe build active file的task。
  • 使用方式:
    • 通过右键 -> Run Code运行程序。
    • 通过下图中的小图标。
      image_1df631t0mfv9mg41lqd1aep133p3u.png-35.9kB
    • 可以在F1中运行命令。
  • 原理(不确定):查了下,应该是根据code-runner.executorMap配置执行命令。
    • 以c++为例,就是cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt
  • 其他设置:
    • Run In Terminal:勾选后,每次调用Run Code都可以。
    • Save All Files Before Run.

2.4. Settings Sync

  • 作用:通过Github Gist同步VSC的配置。
  • 参考资料:
  • 使用:
    • 和以前有些不同。点击上传配置后出现如下界面。image_1dk2tk7hg1h6d9uhtvi1qu1vr39.png-163.3kB
    • 这时我们应该点击 login with github,然后在上传的时候选择我们所需的gist,如下图:image_1dk2tm5cdrii52k1kjh17kj13ofm.png-103kB

2.5. background

  • 可以在配置中设置本地图片以及css样式。
  • 举例:
    • 需要注意的是本地文件格式。
    • customImages也可以通过互联网获取。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      "background.useDefault": false,
      "background.customImages": [
      "file:///E:/photo/Fubuki/0be4612442a7d933fff9e281a34bd11372f00141.jpg"
      ],
      "background.useFront": false,
      "background.style": {
      "content": "''",
      "pointer-events": "none",
      "position": "absolute",
      "z-index": "99999",
      "right": "200px",
      "width": "100%",
      "height": "100%",
      "background-position": "0% 0%",
      "background-size": "cover",
      "background-repeat": "no-repeat",
      "opacity": 0.1,
      "object-fit": "scale-down",
      },

image_1df85artbrbq1jnljuh1s9c1fms9.png-267.4kB

3. 编写并运行C++程序

3.1. 综述

  • 参考资料:
  • VSC中主要通过三个配置文件来对C++程序的编写、运行、调试进行配置:
    • c_cpp_properties.json:主要作用是配置IntelliSense。
    • launch.json:主要作用是帮助调试。
    • tasks.json:主要作用是构建应用程序。
  • 对于给定下面的 hello world 代码进行测试(代码来自官方文档)。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #include <iostream>
    #include <vector>
    #include <string>

    using namespace std;

    int main()
    {

    vector<string> msg {"Hello", "C++", "World", "from", "VS Code!"};

    for (const string& word : msg)
    {
    cout << word << " ";
    }
    cout << endl;
    }

3.2. IntelliSense

  • 作用:代码编写过程中的一些作用:
    • code completion。一般输入字符串时直接会有显示。如果没有显示,可以通过ctrl+space来获取代码补全信息。
      image_1df5mcsv81jpt8boqkjj6car89.png-29.8kB
    • quick info。可以在代码补全时,输入ctrl+space来获取简要信息。
      image_1df5mhneh1fjo4241icu86b1k5h1g.png-42.7kB
    • parameter info。在输入完成一个方法后,会显示参数信息。
      image_1df5mkkms10f016308r95oa1b091t.png-90.5kB
  • c_cpp_properties.json
    • 官方Github解释
    • 如何生成该文件?
      • 直接在.vscode中新建文件。
      • 通过 >C/C++: Edit Configurations (JSON) 自动创建。
    • 主要参数就是configurations中的compilerPath(好像与使用的STL有关)和includePath(自定义头文件路径)。
    • 举例:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      {
      "env" : {
      "myDefaultIncludePath": [
      "${workspaceFolder}",
      "${workspaceFolder}/include"
      ],
      "myCompilerPath": "/usr/local/bin/gcc-7"
      },
      "configurations": [
      {
      "name": "Mac",
      "intelliSenseMode": "gcc-x64",
      "includePath": [ "${myDefaultIncludePath}", "/another/path" ],
      "macFrameworkPath": [ "/System/Library/Frameworks" ],
      "defines": [ "FOO", "BAR=100" ],
      "forcedInclude": [ "${workspaceFolder}/include/config.h" ],
      "compilerPath": "E:\\Software\\MinGW\\bin\\g++.exe",
      "cStandard": "c11",
      "cppStandard": "c++17",
      "compileCommands": "/path/to/compile_commands.json",
      "browse": {
      "path": [ "${workspaceFolder}" ],
      "limitSymbolsToIncludedHeaders": true,
      "databaseFilename": ""
      }
      }
      ],
      "version": 4
      }

3.3. 构建应用程序

  • 在VSC中构建应用程序,需要创建tasks.json

    • 感觉VSC中一个重要概念就是tasks。
    • Tasks官方简介:在VSC中使用一些工具(这些工具原本需要在命令行中设置、运行)。
  • 如何创建?

    • 直接在.vscode中新建文件。
    • 通过 Tasks:Configure Tasks -> Create tasks.json -> Others 来创建。
  • tasks.json举例:

    • 使用这个执行的就是g++ -g -o helloworld helloworld.cpp命令。
    • group中的内容,应该就是指的是通过 Tasks: Run Build Task 执行,即ctrl+shift+b
    • 这个官方文档中有少量下面参数的介绍。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      {
      "version": "2.0.0",
      "tasks": [
      {
      "label": "build",
      "type": "shell",
      "command": "g++",
      "args": [
      "-g",
      "-o",
      "${fileBasenameNoExtension}",
      "${fileBasenameNoExtension}.cpp"
      ],
      "group": {
      "kind": "build",
      "isDefault": true
      }
      }
      ]
      }
  • 运行:

    • 当拥有grouptest的配置时,可以通过 Tasks: Run Test Task来运行程序。
    • 当拥有groupbuild的配置时,可以通过 Tasks: Run Build Task来运行程序。

3.4. 调试程序

  • 参考资料:cpptools文档 - Configuring launch.json for C/C++ debugging

  • 如果要调试,就需要建立launch.json

  • 如果新建launch.json的方法:

    • 直接创建文件。
    • 通过下图新建。但好像其实选哪个都会新建launch.json文件。
      image_1df5tmjn216fgh16k715o513v02a.png-35.2kB
      image_1df5to4qi4bq8v53pl45613s32n.png-7.2kB
  • MinGW GDB调试的launch.json举例:

    • 注意preLaunchTask,这个名字对应的是 tasks.json 中的 label
    • 如果不设置preLaunchTask,则需要在调试前自己构建项目(即创建*.exe文件)。
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      {
      "version": "0.2.0",
      "configurations": [
      {
      "name": "(gdb) Launch",
      "type": "cppdbg",
      "request": "launch",
      "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
      "args": [],
      "stopAtEntry": true,
      "cwd": "${workspaceFolder}",
      "environment": [],
      "externalConsole": false,
      "MIMode": "gdb",
      "miDebuggerPath": "E:\\Software\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
      "preLaunchTask": "build",
      "setupCommands": [
      {
      "description": "Enable pretty-printing for gdb",
      "text": "-enable-pretty-printing",
      "ignoreFailures": true
      }
      ]
      }
      ]
      }
  • 调试界面:

    • 通过F5进行调试。
      image_1df5viot0q38145f8fb1v67lq434.png-46.3kB