配置sublime的中的C++编译器(.sublime-build),实现C++20在sublime中的使用,小白教程

一,前期准备

首先我们需要准备一下 C++ 环境,当然如果你觉得你当前的C++环境配置好了,并且C++的版本也能完成您日常的使用需求,您可以使用下面两条命令对C++的版本进行查询

cpp 复制代码
g++ -v
cpp 复制代码
g++ --version

通过返回的版本简单的判断是否能解决您的需求,如果您觉得当前的版本能支撑您后期的使用,请直接跳转到第二阶段对JSON文件的配置。

  • GCC 4.8: 支持 C++11 (部分)
  • GCC 4.9: 支持 C++11 和 C++14 (部分)
  • GCC 5: 完全支持 C++14
  • GCC 6: 支持 C++14 和 C++17 (部分)
  • GCC 7: 支持 C++17 (大部分)
  • GCC 8: 完全支持 C++17,部分支持 C++20
  • GCC 9: 支持更多的 C++20 特性
  • GCC 10: 支持大部分 C++20 特性
  • GCC 11: 更全面地支持 C++20
  • GCC 12: 支持几乎所有的 C++20 特性
  • GCC 13 及以后: 增加对 C++20 的完全支持并开始对 C++23 进行支持

如果您发现您并未配置好您的C++,或者说您觉得当前的版本不能支撑日常的学习,那么您需要下载一个Mingw 配置C++环境

当前我使用我当前最新的Mingw来作为演示

下载之后,解压到一个你知道的文件夹中,打开解压的文件路径,发现有一个bin文件

打开他之后,复制上方的文件路径,解压的时候最好是全英文路径

path 复制代码
e.g. : D:\ProgramFiles\mingw64\bin
  1. 编辑系统环境变量
  1. 环境变量...

  2. 编辑下方的Path 中的内容,编辑-->新建,把路径站上去,选中这个路径上移到最上方。

  3. 一直点确定,完成。

在测试一下 g++ 的版本。

二、环境的配置

工具(tools)--- > 编译系统 -----> 新建编译系统... ,将会生成一个*.sublime-build文件,在其中配置C++的JSON文件,当然你也可以修改本身就有的编译文件。

1,傻瓜式配置法

把下列代码复制到上面提到的那个文件中,保存,再次选中刚刚编辑的JSON文件就能编译C++了。

json 复制代码
{  
   "shell_cmd": "g++  -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"",  
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",  
   "selector": "source.c++",  
   "encoding": "gbk",  
}

2,基础配置法

默认情况下,g++ 编译器通常不会使用最新的 C++ 标准,而是使用一个稳定的默认标准(通常是一个较旧的标准,如 C++14 或 C++17),以确保与旧代码的兼容性。因此,如果你不显式指定 -std=c++20-std=c++23,编译器可能会使用较旧的标准进行编译,这会导致使用新标准中的特性时出现错误。

所以,如果我们想使用最新的编译方式,我们必须要参考上文,我们的编译器最大支持的C++版本,从而更新我们的JSON文件,达到使用最新版本的C++进行编译。

json 复制代码
{  
   "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"",  
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
   "working_dir": "${file_path}",  
   "selector": "source.c++",  
   "encoding": "gbk",  
}

具体更改只有一行代码

3,深入解析

基础配置项
json 复制代码
{  
   "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"",  
   //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。   
   "working_dir": "${file_path}",  // working_dir 编译的工作区
   "selector": "source.c++",  // 对象
   "encoding": "gbk",  // encoding 编码 : 选择 gbk(国标:包含所有的汉字) 
}
构建文本的变体
json 复制代码
{
	[  
       {  
           "name": "Single File Build", // 只编译 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\""  
       },  
       {  
           "name": "Single File Run",  //只运行
           "shell_cmd": "start cmd /c \"\"${file_base_name}\" & pause\""  
       },  
       {  
           "name": "Single File Build & Run", // 编译加运行 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\""  
       },  


       // 下面为多文件编译 , 请勿使用 。
       {  
           "name": "Multiple Files Build",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o \"${file_base_name}\""  
       },  
       {  
           "name": "Multiple Files Run",  
           "shell_cmd": "start cmd /c \"\"${file_base_name}\" & pause\""  
       },  
       {  
           "name": "Multiple Files Build & Run",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\""  
       }  
   ]
}
json 复制代码
{  
   "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"",  
   //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。
   "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。   
   "working_dir": "${file_path}",  // working_dir 编译的工作区
   "selector": "source.c++",  // 对象
   "encoding": "gbk",  // encoding 编码 : 选择 gbk(国标:包含所有的汉字) 
   "variants":  
   [  
       {  
           "name": "Single File Build", // 只编译 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\""  
       },  
       {  
           "name": "Single File Run",  //只运行
           "shell_cmd": "start cmd /c \"\"${file_base_name}\" & pause\""  
       },  
       {  
           "name": "Single File Build & Run", // 编译加运行 
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\""  
       },  


       // 下面为多文件编译 , 请勿使用 。
       {  
           "name": "Multiple Files Build",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o \"${file_base_name}\""  
       },  
       {  
           "name": "Multiple Files Run",  
           "shell_cmd": "start cmd /c \"\"${file_base_name}\" & pause\""  
       },  
       {  
           "name": "Multiple Files Build & Run",  
           "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\""  
       }  
   ]  

}
相关推荐
若亦_Royi1 小时前
C++ 的大括号的用法合集
开发语言·c++
ragnwang4 小时前
C++ Eigen常见的高级用法 [学习笔记]
c++·笔记·学习
lqqjuly7 小时前
特殊的“Undefined Reference xxx“编译错误
c语言·c++
冰红茶兑滴水8 小时前
云备份项目--工具类编写
linux·c++
刘好念8 小时前
[OpenGL]使用 Compute Shader 实现矩阵点乘
c++·计算机图形学·opengl·glsl
酒鬼猿8 小时前
C++进阶(二)--面向对象--继承
java·开发语言·c++
姚先生979 小时前
LeetCode 209. 长度最小的子数组 (C++实现)
c++·算法·leetcode
小王爱吃月亮糖9 小时前
QT开发【常用控件1】-Layouts & Spacers
开发语言·前端·c++·qt·visual studio
aworkholic10 小时前
opencv sdk for java中提示无stiching模块接口的问题
java·c++·opencv·jni·opencv4android·stiching
程序员老冯头10 小时前
第十六章 C++ 字符串
开发语言·c++