用vscode配置C++3种编译器及多文件编译

末尾附上最终的模板

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
    • 配置环境变量
    • 测试是否成功
  • 第二步
    • 下载Vscode
    • 创建一个文件夹cppenv

windows上安装msvc

下载visual studio 2022,安装 “使用C++的桌面开发”

用vscode配置C++3种编译器及多文件编译_第1张图片

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

打开网址后,往下滑动,可以看到

用vscode配置C++3种编译器及多文件编译_第2张图片

选择对应的版本即可。我这里选择 Win64: 7-Zip archive

下载后解压到某个目录,然后配置环境变量即可

示例:

解压到 D:\env\mingw64

然后把这个D:\env\mingw64\bin目录加入到环境变量

这不bin目录下面包含g++ clang gdb等

可以打开命令行 输入 g++ --version clang++ --version 验证是否安装成功

用vscode配置C++3种编译器及多文件编译_第3张图片

创建C++项目模板

创建一个目录 cppenv 然后用vscode打开

创建main.cpp

#include 
using namespace std;

int main()
{
    cout << "env" << endl;
    return 0;
}

 下载c/c++插件

用vscode配置C++3种编译器及多文件编译_第4张图片

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

 配置task.json:

用vscode配置C++3种编译器及多文件编译_第5张图片

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

用vscode配置C++3种编译器及多文件编译_第6张图片 

先配置一个GNU的gcc

点击

用vscode配置C++3种编译器及多文件编译_第7张图片

点击后会生成tasks.json 

用vscode配置C++3种编译器及多文件编译_第8张图片

 

可以将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的编译器

用vscode配置C++3种编译器及多文件编译_第9张图片

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

用vscode配置C++3种编译器及多文件编译_第10张图片

 

同样 改名 加c++版本

最好再配置微软的MSVC,这个就多点步骤了,

选择这个

用vscode配置C++3种编译器及多文件编译_第11张图片

 点击后生成

用vscode配置C++3种编译器及多文件编译_第12张图片

另外关键点:

我们选的是cl.exe,但是我们在终端,发现cl找不到。

用vscode配置C++3种编译器及多文件编译_第13张图片

但是在Developer Command Prompt for VS 2002的终端里面是有 cl的用vscode配置C++3种编译器及多文件编译_第14张图片 

所以我们需要在这个 Developer Command Prompt for VS 2002的终端,进入到项目目录,然后用code 打开(先关闭现有的)用vscode配置C++3种编译器及多文件编译_第15张图片 

 

然后发现vscode的终端也能执行cl了,(其实应该就是加载了Developer Command Prompt for VS 2002的环境变量,跟shell里面sourc一些变量一样)

测试下MSVC

用vscode配置C++3种编译器及多文件编译_第16张图片

生成的东西有点多。

最终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插件,一键运行

用vscode配置C++3种编译器及多文件编译_第17张图片

也可以指定C++版本

用vscode配置C++3种编译器及多文件编译_第18张图片 用vscode配置C++3种编译器及多文件编译_第19张图片

 

用vscode配置C++3种编译器及多文件编译_第20张图片

 

再就是如何debug

1 可以使用gdb,mingw里面有

2 vscode里面直接debug

 用vscode配置C++3种编译器及多文件编译_第21张图片

 点击上图4指向的位置后

用vscode配置C++3种编译器及多文件编译_第22张图片

 

选择上图红色框即可

用vscode配置C++3种编译器及多文件编译_第23张图片

总结注意事项

MSVC需要进入Developer Command Prompt for VS2019/2022才能编译c++项目

C++23先阶段就是坑,跳进去就出不来了

推荐大家用GCC

 

多文件编译

用vscode配置C++3种编译器及多文件编译_第24张图片

 

示例代码

用vscode配置C++3种编译器及多文件编译_第25张图片

 main.cpp

#include 
#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支持多文件编译

用vscode配置C++3种编译器及多文件编译_第26张图片

 

{
    "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

你可能感兴趣的:(c++,vscode,c++,ide)