0


用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++的桌面开发”

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

标签: vscode c++ ide

本文转载自: https://blog.csdn.net/wade1010/article/details/128328392
版权归原作者 3333333_ 所有, 如有侵权,请联系我们删除。

“用vscode配置C++3种编译器及多文件编译”的评论:

还没有评论