VSCode的C++开发环境配置

C++编译原理简介

一个完整的C++程序开发大致经历以下几个步骤:

  • coding: 使用编辑器编写程序,这个文件就是程序源代码。
  • compile: 编译源代码,这意味着将程序源代码翻译成机器语言,得到目标代码(object code,以o或obj作为文件后缀),如果有语法错误,则会编译失败。
  • link: 将目标代码、库代码和启动代码统一在一起。
  • build:compile+link+生成exe可执行程序几个步骤合在一起,就成为构建(build)。


已有环境:

  • Windows 10系统
  • Visual Studio Code

Step1:安装编译器

大多数Linux发行版与MacOS系统都自带C++编译器,而Windows则通常没有。在命令行输入命令检查是否有gcc编译器:

g++ --version

检查是否有clang编译器:

clang --version

命令行显示:


则说明编译器不存在。
首先我们在windows安装MYSYS2:

  • MSYS2是一组工具和库,为用户提供易于使用的环境,用于构建、安装和运行本机 Windows 软件。此工具包含mintty命令行终端,以及bash,以及git和subversion等版本控制工具,以及tar和awk等工具。MSYS2 为 GCC、mingw-w64、CPython、CMake、Meson、OpenSSL、FFmpeg、Rust、Ruby 等提供最新的原生构建。它提供了一个名为Pacman的软件包管理系统。

安装完成后,需要勾选Run MSYS 64bit now:



然后在命令行输入pacman -Syu以更新软件包:

$ pacman -Syu
:: Synchronizing package databases...
 mingw32                        805.0 KiB
 mingw32.sig                    438.0   B
 mingw64                        807.9 KiB
 mingw64.sig                    438.0   B
 msys                           289.3 KiB
 msys.sig                       438.0   B
:: Starting core system upgrade...
warning: terminate other MSYS2 programs before proceeding
resolving dependencies...
looking for conflicting packages...

Packages (6) bash-5.1.004-1  filesystem-2021.01-1
             mintty-1~3.4.4-1  msys2-runtime-3.1.7-4
             pacman-5.2.2-9  pacman-mirrors-20201208-1

Total Download Size:   11.05 MiB
Total Installed Size:  53.92 MiB
Net Upgrade Size:      -1.24 MiB

:: Proceed with installation? [Y/n]
:: Retrieving packages...
 bash-5.1.004-1-x86_64            2.3 MiB
 filesystem-2021.01-1-any        33.2 KiB
 mintty-1~3.4.4-1-x86_64        767.2 KiB
 msys2-runtime-3.1.7-4-x86_64     2.6 MiB
 pacman-mirrors-20201208-1-any    3.8 KiB
 pacman-5.2.2-9-x86_64            5.4 MiB
(6/6) checking keys in keyring       100%
(6/6) checking package integrity     100%
(6/6) loading package files          100%
(6/6) checking for file conflicts    100%
(6/6) checking available disk space  100%
:: Processing package changes...
(1/6) upgrading bash                 100%
(2/6) upgrading filesystem           100%
(3/6) upgrading mintty               100%
(4/6) upgrading msys2-runtime        100%
(5/6) upgrading pacman-mirrors       100%
(6/6) upgrading pacman               100%
:: To complete this update all MSYS2 processes including this terminal will be closed. Confirm to proceed [Y/n]

完成这个步骤后会关闭命令行窗口。我们需要再次在开始菜单搜索MSYS2启动命令行,输入pacman -Su更新剩下的包(这些步骤是官方教程给的,我也想不懂为啥是这样的):

$ pacman -Su
:: Starting core system upgrade...
 there is nothing to do
:: Starting full system upgrade...
resolving dependencies...
looking for conflicting packages...

Packages (20) base-2020.12-1  bsdtar-3.5.0-1
              [... more packages listed ...]

Total Download Size:   12.82 MiB
Total Installed Size:  44.25 MiB
Net Upgrade Size:       3.01 MiB

:: Proceed with installation? [Y/n]
[... downloading and installation continues ...]

接下来输入pacman -S --needed base-devel mingw-w64-x86_64-toolchain来安装mingw-w64 gcc工具集。

Step2:GCC加入环境变量

如下图,在系统变量->Path中添加C:\msys64\mingw63\bin


启动或者重启Powershell,输入gcc --version,显示了gcc版本,则说明编译器安装成功。

Step3:vscode中构建C++程序

首先在vscode扩展商店里安装C/C++以及C/C++ Extension Pack,再安装一个code runner



然后在工程根目录下编写C++程序,以编写一个计算阶乘的程序为例:

#include
#include 
using namespace std;


long long fact(long long n) {
    if (n < 0) return -1;
    if (n == 0) return 1;
    return n * fact(n - 1);
}


int main() {
    long long n;
    cout << "Please input number: ";
    cin >> n;
    long long res = fact(n);
    cout << "Factorial of " << n << " is " << res << endl;
    system("pause...");
    return 0;
}

如何build写好的程序:点击终端/Terminal->运行生成任务/Run build task->选择C/C++: g++.exe生成活动文件



此时在左侧资源管理器显示了构建的exe文件:


快捷键ctrl+~在vscode调出powershell,输入./fact,就可以启动程序了:

c_cpp_properties.json配置文件

VSCode C++配置文件主要包括./.vscode目录下的:

  • c_cpp_properties.json:c/c++相关的基础配置
  • tasks.json:构建任务的配置
  • launch.json:debug配置

点击ctrl+shift+p调出命令面板,然后输入c/c++,选择edit configurations:



此时工程目录就会自动新建.vscode文件夹,编辑里面的c_cpp_properties.json:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "MAX_NUM=100"
            ],
            "windowsSdkVersion": "10.0.19041.0",
            "compilerPath": "C:\\msys64\\mingw64\\bin\\g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

configurations下面包含了多组配置对象,version官方建议不要修改此字段,它主要用于版本跟踪。configurations下面的配置有:

  • includePath:引入头文件的路径。我通常会将需要引入的头文件复制到工程目录的include子路径下,includePath写"${workspaceFolder}/include"
  • compilerPath:编译器路径,填写刚才安装的编译器路径C:\msys64\mingw64\bin\g++.exe
  • intelliSenseMode:智能感知编译器版本,不同系统有不同的默认值(MSVC,gcc,clang)。我填写gcc-x64
  • defines:IntelliSense引擎在解析文件时使用的预处理器定义列表

tasks.json配置文件

tasks.json将会告诉vscode如何构建你的c++程序。点击终端->配置默认生成任务,此时.vscode目录会新建一个tasks.json配置文件:

{
    "version": "2.0.0",
    "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": "编译器: C:\\msys64\\mingw64\\bin\\g++.exe"
        }
    ]
}

tasks内包含多组任务配置对象,每个对象的配置如下:

  • label:任务名称
  • command制定用什么编译器构建,可以写编译器的绝对路径;如果编译器添加到了系统变量,也可以直接写g++;
  • args:命令行中给g++传入的参数

launch.json配置文件

此配置文件主要用于debugger的配置。点击运行->添加配置->C++ (GDB/LLDB),选择编译器,此时.vscode目录下会自动生成launch.json配置文件:

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++ - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
        }
    ]
}

在此我直接使用系统默认的配置,更详细的配置参考下方reference的debugging。然后给程序打好断点,点击左侧活动栏的运行和调试,点击g++ 生成和调试活动文件,就可以debug了:

Reference

C/C++ for Visual Studio Code
MSYS2 installation guide
c_cpp_properties.json reference
Debugging

你可能感兴趣的:(VSCode的C++开发环境配置)