末尾附上最终的模板
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