用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
    • 配置环境变量
    • 测试是否成功
  • 第二步
    • 下载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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值