末尾附上最终的模板
Vscode开发环境配置
- C++有很多种编译器,最重要的有三种 
  - GNU的GCC(推荐)
- 微软的MSVC
- Clang/LLVM
 
C++的最新标准是C++23,各个编译器对C++各个标准的支持情况是不同的:
C++ compiler support - cppreference.com
注意主要看C++20的支持情况
用Vscode配置可以支持三种编译器的开发环境
- 因为要支持MSVC(微软)所以建议你在Windows.上实操
- 第一步: 
  - 下载GCC和Clang以及MSVC 
    - gcc、clang->mingw(https://winlibs.com/)
- msvc->VS2019或是vs2022
 
- 配置环境变量
- 测试是否成功
 
- 下载GCC和Clang以及MSVC 
    
- 第二步 
  - 下载Vscode
- 创建一个文件夹cppenv
 
windows上安装msvc
下载visual studio 2022,安装 “使用C++的桌面开发”

gcc和clang在windows上可以通过mingw,网址 WinLibs - GCC+MinGW-w64 compiler for Windows 这个网址主要是移植一些GNU的东西到windows上
打开网址后,往下滑动,可以看到

选择对应的版本即可。我这里选择 Win64: 7-Zip archive
下载后解压到某个目录,然后配置环境变量即可
示例:
解压到 D:\env\mingw64
然后把这个D:\env\mingw64\bin目录加入到环境变量
这不bin目录下面包含g++ clang gdb等
可以打开命令行 输入 g++ --version clang++ --version 验证是否安装成功

创建C++项目模板
创建一个目录 cppenv 然后用vscode打开
创建main.cpp
#include <iostream>
using namespace std;
int main()
{
    cout << "env" << endl;
    return 0;
}下载c/c++插件

使用方法可以点击上图里面的Documentation,地址为 C++ programming with Visual Studio Code
配置task.json:

点击Configure Tasks...后会出现下图,一堆的你当前电脑安装过的编译器
 
 
先配置一个GNU的gcc
点击

点击后会生成tasks.json

可以将label的名字改下,例如: GCC Compiler
修改下参数,指定使用的c++版本,这里改成c++11
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "GCC Compiler",
            "command": "W:\\env\\mingw64\\bin\\g++.exe",
            "args": [
                "-std=c++11",
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: W:\\env\\mingw64\\bin\\g++.exe"
        }
    ]
}再配置一个clang的编译器

要选择clang++不要选择上面的两个clang

同样 改名 加c++版本
最好再配置微软的MSVC,这个就多点步骤了,
选择这个

点击后生成

另外关键点:
我们选的是cl.exe,但是我们在终端,发现cl找不到。

但是在Developer Command Prompt for VS 2002的终端里面是有 cl的 
 
所以我们需要在这个 Developer Command Prompt for VS 2002的终端,进入到项目目录,然后用code 打开(先关闭现有的) 
 
然后发现vscode的终端也能执行cl了,(其实应该就是加载了Developer Command Prompt for VS 2002的环境变量,跟shell里面sourc一些变量一样)
测试下MSVC

生成的东西有点多。
最终tasks.json
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "GCC Compiler",
            "command": "W:\\env\\mingw64\\bin\\g++.exe",
            "args": [
                "-std=c++11",
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: W:\\env\\mingw64\\bin\\g++.exe"
        },
        {
            "type": "cppbuild",
            "label": "Clang Compiler",
            "command": "W:\\env\\mingw64\\bin\\clang++.exe",
            "args": [
                "-std=c++11",
                "-fcolor-diagnostics",
                "-fansi-escape-codes",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: W:\\env\\mingw64\\bin\\clang++.exe"
        },
        {
            "type": "cppbuild",
            "label": "MSVC Compiler",
            "command": "cl.exe",
            "args": [
                "/Zi",
                "/std:c++latest",
                "/EHsc",
                "/nologo",
                "/Fe${fileDirname}\\${fileBasenameNoExtension}.exe",
                "${file}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": "build",
            "detail": "compiler: cl.exe"
        }
    ]
}
以后可以有项目 可以直接复制这个tasks.json,也可以cp -r cppenv yourpathname
另外也可以安装code runner插件,一键运行

也可以指定C++版本
 
 

再就是如何debug
1 可以使用gdb,mingw里面有
2 vscode里面直接debug
 
点击上图4指向的位置后

选择上图红色框即可

总结注意事项
MSVC需要进入Developer Command Prompt for VS2019/2022才能编译c++项目
C++23先阶段就是坑,跳进去就出不来了
推荐大家用GCC
多文件编译

示例代码

main.cpp
#include <iostream>
#include "yourfile.h"
using namespace std; // 头文件中不建议加上这行,但是主文件建议加上这行,比较方便
int main()
{
    cout << add(1, 2) << endl;
    return 0;
}yourfile.cpp
#include "yourfile.h"
int add(int x, int y)
{
    return x + y;
}yourfile.h
#ifndef YOURFILE_H
#define YOURFILE_H
int add(int, int);
#endif方式1、通过命令行编译
g++ -o main.exe main.cpp yourfile.cpp
main.exe执行即可
方式2、分开 先生成obj文件,再链接
g++ -c main.cpp yourfile.cpp
g++ -o main.exe main.o yourfile.o
配置vscode支持多文件编译

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "GCC Compiler",
            "command": "W:\\env\\mingw64\\bin\\g++.exe",
            "args": [
                "-std=c++11",
                "-fdiagnostics-color=always",
                "-g",
                // "${file}",
                "${workspaceFolder}\\*.cpp",
                "-o",
                // "${fileDirname}\\${fileBasenameNoExtension}.exe"
                "${workspaceFolder}\\main.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: W:\\env\\mingw64\\bin\\g++.exe"
        },
        {
            "type": "cppbuild",
            "label": "Clang Compiler",
            "command": "W:\\env\\mingw64\\bin\\clang++.exe",
            "args": [
                "-std=c++11",
                "-fcolor-diagnostics",
                "-fansi-escape-codes",
                "-g",
                "${workspaceFolder}\\*.cpp",
                "-o",
                "${workspaceFolder}\\main.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: W:\\env\\mingw64\\bin\\clang++.exe"
        },
        {
            "type": "cppbuild",
            "label": "MSVC Compiler",
            "command": "cl.exe",
            "args": [
                "/Zi",
                "/std:c++latest",
                "/EHsc",
                "/nologo",
                "${workspaceFolder}\\*.cpp",
                "/Fe${workspaceFolder}\\main.exe",
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": "build",
            "detail": "compiler: cl.exe"
        }
    ]
}模板 github地址
https://github.com/wade1010/vscodecppenv


















