VsCode 创建C++项目配置之launch/tasks.json文件配置(Windows版)

2,366 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情

一、安装VsCode

参看 Visual Studio Code 写代码前的准备

二、安装相关扩展

  • 在Extensions view(扩展视图)通过搜索安装 C++ 扩展 (Ctrl+Shift+X).

    image.png

三、安装mingw-w64

创建它是为了在 Windows 系统上支持 GCC 编译器,使用 mingw-w64 中的 GDB 调试器来创建在 Windows 上运行的程序。

  • 通过 MSYS2 获得最新版本的 Mingw-w64,它提供了 GCC、Mingw-w64 和其他有用的 c++ 工具和库的最新原生版本。

    image.png

    您可以从 MSYS2 页面下载最新的安装程序,或使用此链接安装,具体教程还可以参考官方文档

    image.png

  • 完成安装后的界面如下所示

    image.png

  • 可以根据需要,安装 mingw-w64 GCC pacman -S mingw-w64-x86_64-gcc

    image.png

  • 查看安装好的 gcc 版本

    image.png

  • 安装 Mingw-w64 工具链(pacman -S --needed base-devel mingw-w64-x86_64-toolchain)。在MSYS2终端下执行pacman命令。接受默认值以安装工具链组中的所有成员。全部安装按下 Enter 键即可。

  • 将 Mingw-w64 bin 文件夹的路径添加到 Windows 的 path 环境变量中,操作步骤如下:

    • 在Windows搜索栏中,键入sysdm.cpl

      image.png

      image.png

    • 添加这个路径: C:\msys64\mingw64\bin 到Path

      image.png

    • 最终点击确定即可

  • 检查你的 Mingw-w64 工具是否正确安装,是否可用

    image.png

四、创建 C++ 项目

4.1 创建工程文件夹

  • 使用 Mingw-w64 命令行工具,键入
    mkdir projects
    cd projects
    mkdir helloworld
    cd helloworld
    code .
    
  • 如下所示

    image.png

  • 通过选择 Yes, I trust the authors 来接受 Workspace Trust弹窗
  • 此时 vscode 将被打开(code .
  • 一般在你的工程目录的 .vscode 文件夹下有如下文件:
    • tasks.json (build instructions)
    • launch.json (debugger settings)
    • c_cpp_properties.json (compiler path and IntelliSense settings)

4.2 创建源码文件

  • 新建文件 helloworld.cpp

    image.png

  • 代码如下所示,Ctrl+S保存
    #include <iostream>
    #include <vector>
    #include <string>
    
    using namespace std;
    
    int main()
    {
        vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
    
        for (const string& word : msg)
        {
            cout << word << " ";
        }
        cout << endl;
    }
    

4.3 编译运行

  • 在 vscode 终端键入g++ .\helloworld.cpp

    image.png

  • 此时将生成 a.exe

  • 在 vscode 终端键入.\a.exe

    image.png

  • 此时代码被正确执行,结果在终端输出

    image.png

  • g++ -g .\helloworld.cpp -o mySingleHelloworld ,其中 -g 表示生成的可执行文件带有调试信息;-o mySingleHelloworld表示可以为生成的可执行文件自定义名称,大家可以自行尝试。

    image.png

4.4 调试配置

4.4.1 launch.json 配置

  • 点击边栏左侧的 Launch&Debug 按钮,点击创建 launch.json 文件

    image.png

  • 你将会发现项目的 .vscode 文件夹下生成了 launch.json 启动配置文件。

  • GDB 调试代码,在列表中选择 C++ (GDB/LLDB)

    image.png

  • 然后系统将创建一个默认的 launch.json 文件

    image.png

  • 将光标放在图中configuration的[]中,点击Add configration

    image.png

  • 在接下来弹出的选项中,选择C/C++:{gdb}启动

    image.png

  • 然后就可以看到类似代码

    image.png

    下面来一起看一下里面的参数。

    以下属性对于每个启动配置都是必需的:

    • type 用于此启动配置的调试器类型。例如,每个安装的调试扩展都引入一个 type: 例如,node 用于内置的 node 调试器,或者 php 和 go 扩展 dephp和go。
    • request 此启动配置的请求类型。目前支持launch 和 attach
    • name 在Debug启动配置下拉菜单中显示的对读者友好的名称。

    其他属性:

    • program 启动调试器时要运行的可执行文件或文件(所以我们需要先build生成一个执行文件 helloworld.exe,vs中的F5一键就把这些过程都做了:编译链接生成)。具体的需要键入运行时启动的程序路径:${workspaceFolder} ,其为工程目录,表示当前 VSCode 打开的文件的根目录。这里先配置成
      "program": "${workspaceFolder}\\helloworld.exe",
      
    • args:表示启动程序时传递给程序进行调试的参数。可以为空。可以根据需求以后配置。
    • cwd: 表示用于查找依赖项和其他文件的当前工作目录。你也可以在当前目录下创建 build 文件夹, 在此文件夹下运行,这里配置为:
      "cwd": "${workspaceFolder}",
      
    • "preLaunchTask": "C/C++: g++.exe 生成活动文件" 表示调试之前要做的
    • 修改过后你将看到
    • 如果下图中的 miDebuggerPath 的 gdb.exe 的所在路径中没有 gdb.exe 则需要在 MINGW64 中安装,然后填写 gdb 所在的路径即可
      pacman -S mingw-w64-x86_64-gdb-multiarch
      

    image.png

4.4.2 tasks.json 配置

  • 按下编辑器右上角的 play button

    image.png

  • 选择 C/C++: g++.exe build and debug active file

    image.png

  • 你将会发现项目的 .vscode 文件夹下生成了 tasks.json ,它存储了 build 配置。

    {
        "tasks": [
            {
                "type": "cppbuild",
                "label": "C/C++: g++.exe 生成活动文件",
                "command": "C:\\msys64\\mingw64\\bin\\g++.exe",
                "args": [
                    "-fdiagnostics-color=always",
                    "-g",
                    "${file}",
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "options": {
                    "cwd": "${fileDirname}"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "detail": "调试器生成的任务。"
            }
        ],
        "version": "2.0.0"
    }
    
  • tasks.json 中的变量可以参考 variables reference 理解,更多的 tasks.json 的配置细节,可以参看官网文档

    • 你可以修改你的 tasks.json 去 build 多文件的 C++ 项目。eg. "${workspaceFolder}/*.cpp" 代替 ${file}.这将 build 所有的在你的工程中的 .cpp文件.  你可以修改输出文件的路径将"${fileDirname}\${fileBasenameNoExtension}.exe" 改成"${workspaceFolder}\myProgram.exe"
    • 这里修改如下:

      image.png

4.4.3 debug

  • 添加断点,点击调试(F5)

    image.png

  • 选择如下,即可开始调试

    image.png

  • 运行结束后,你将在终端上看到运行结果

    image.png