刚刚安装的 Sublime Text 无法自行具备运行 C、C++ 代码的能力,需要我们手动对其进行设置。

配置GCC 编译环境

开始设置前,我们需要初始化好 GCC 编译环境。打开命令行窗口,输入gcc -v,如果输出GCC的具体版本等信息,表明当前系统以成功配置了 GCC 编译环境。(如图所示)

如果未配置GCC 编译环境,可阅读MinGW-w64安装教程——著名C/C++编译器GCC的Windows版本进行安装。

MinGW-W64 Online Installer:
sourceforge.net/project… 下载 mingw-get-setup.exe
MinGW Installation Manager → Basic Setup → 勾选 "mingw32-base" & "mingw32-gcc-g++" → Installation → Apply Changes

MinGW 离线安装:
sourceforge.net/project…
选择 MinGW-W64 GCC-8.1.0 的 x86_64-win32-seh
下载后文件: "x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z"
解压再配置环境变量


注意选择以下其中一个下载,不要下载MinGW-W64 Online Installer。

sjlj,seh的区别:

  • sjlj 全称是 SetJump / LongJump,前者设还原点,后者跳到还原点。可用于 32 位或者 64 位系统。
  • seh(Structured Exception Handling,结构化异常处理)是 Borland 公司的,微软买了其专利使用权,它利用了 FS 段寄存器,将还原点压入栈,收到异常时再弹出。相较而言,sjlj 是 C 标准库就有的东西,seh 在 2014 年前是有专利的,从性能上说 seh 比 sjlj 快。只用于64位系统。

【x86_64 64位】
1、seh 是新发明的,而 sjlj 则是古老的。只用于64位系统。
2、seh 性能比较好,但不支持 32位。 sjlj 稳定性好,支持 32位和64位。

因此,x86_64 系统架构的推荐使用 seh 的异常处理模型。

posix 和 win32 的区别是指编译器使用的线程模型。posix 是一种 UNIX API 标准,而 win32 是 Windows 的 API 标准。这两者之间有一些区别,例如在 mingw-w64 中,使用 posix 线程将启用 C++11/C11 多线程功能,并使 libgcc 依赖于 libwinpthreads。而使用 win32 线程则不会启用 C++11 多线程功能。

如果在 Windows 下开发 Linux 应用程序,则选择 posix;如果开发 Windows 平台下的应用程序,就需要选择 Win32。
这个你自己选择吧,你偏向于原生的C标准就选posix,面向Windows编程就选win32,如果你还是选择困难的话,毕竟我们最常用的还是Windows,选win32也没什么问题。

运行MinGW-W64-install.exe会安装失败。

下载 x86_64-win32-seh 的7z文件后解压。
添加环境变量,变量路径替换为解压路径。
环境变量内容如下:

- 变量名 变量值
- C_INCLUDEDE_PATH C:\MinGW\include
- LIBRARY_PATH C:\MinGW\lib
- Path C:\MinGW\bin

配置 Sublime Text 编辑器(GCC)

在已安装好 GCC 编译器的基础上,接下来开始正式配置 Sublime Text 编辑器。

在菜单栏中依次点击“Tools -> Build System -> New Build System”,由此即可在 Sublime Text 打开一个临时文件,如下所示:

删除其所有内容,并将如下内容完整地复制到该文件中:

{
    "cmd": ["gcc","${file}","-o", "${file_path}/${file_base_name}"],
    "file_regex":"^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir":"${file_path}",
    "selector": "source.c",
    "encoding":"cp936",
    "variants":
    [
        {
            "name": "C_Run",
            "cmd": ["cmd","/c", "gcc", "${file}", "-o", "${file_path}/${file_base_name}","&&", "cmd", "/c","${file_path}/${file_base_name}"]
        },
        {
            "name":"C_RunInCommand",
            "cmd": ["cmd","/c", "gcc", "${file}","-o","${file_path}/${file_base_name}", "&&","start", "cmd", "/c","${file_path}/${file_base_name} & pause"]
         }
    ]
}

按住Ctrl + S保存上述文件,并将文件取名为 gcc.sublime-build ,点击保存。

重新打开 Sublime Text,并依次在菜单栏中选择“Tools -> Build System”, 在该选项中就可以看到上一步创建好的 gcc_sublime-build 的文件名 gcc。

通过勾选 gcc 编译选项,我们就可以直接在 Sublime Text 运行写好的 C 语言程序。
编写一个 Hellow Word 程序, 选择“Tools -> Build With...”选项(Ctrl+Shift+B )编译运行。

这里有 gcc、gcc-C_Run 和 gcc-RunInCommand 3 个选项,其中 gcc 用于编译程序(读者可自行查看执行结果),gcc-C_Run 用于在 Sublime Text 内部调用 GCC 编译器并显示程序的执行结果,gcc_RunInCommand 用于在命令行窗口中借助 gcc 指令运行该程序并输出执行结果。

同样,如果想搭建 C++ 开发环境,只需再建立一个 g++.sublime-build 配置文件,并将如下内容拷贝到该文件中:

{
    "cmd": ["g++","-Wall", "${file}", "-o", "${file_path}/${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",
    "encoding":"cp936",
    "variants":
    [
        {
            "name": "C++_Run",
            "cmd": ["cmd", "/c", "g++", "-Wall","${file}", "-o", "${file_path}/${file_base_name}", "&&", "cmd", "/c", "${file_path}/${file_base_name}"]
        },  
        {
            "name": "C++_RunInCommand",
            "cmd": ["cmd", "/c", "g++", "-Wall","${file}", "-o", "${file_path}/${file_base_name}", "&&", "start", "cmd", "/c", "${file_path}/${file_base_name} & echo.&pause"]
        }
    ]
}

配置TCC 编译环境

Tiny C Compiler(简称TCC, 或Tiny CC)是一个超小、超快的标准C语言编译器。
TCC Official Website Download Link
Windows 用户请下载 tcc-0.9.27-win64-bin.zip ,将下载好的文件,解压到某一文件夹即可。
在系统环境变量中双击Path,点击新建,添加tcc文件夹路径。
命令行窗口输入tcc检查是否配置完成。

C:\Users\Administrator>tcc
Tiny C Compiler 0.9.27 - Copyright (C) 2001-2006 Fabrice Bellard
Usage: tcc [options...] [-o outfile] [-c] infile(s)...
       tcc [options...] -run infile [arguments...]
General options:
  -c          compile only - generate an object file
  -o outfile  set output filename
  -run        run compiled source
  -fflag      set or reset (with 'no-' prefix) 'flag' (see tcc -hh)
  -Wwarning   set or reset (with 'no-' prefix) 'warning' (see tcc -hh)
  -w          disable all warnings
  -v -vv      show version, show search paths or loaded files
  -h -hh      show this, show more help
  -bench      show compilation statistics
  -           use stdin pipe as infile
  @listfile   read arguments from listfile
Preprocessor options:
  -Idir       add include path 'dir'
  -Dsym[=val] define 'sym' with value 'val'
  -Usym       undefine 'sym'
  -E          preprocess only
Linker options:
  -Ldir       add library path 'dir'
  -llib       link with dynamic or static library 'lib'
  -r          generate (relocatable) object file
  -shared     generate a shared library/dll
  -rdynamic   export all global symbols to dynamic linker
  -soname     set name for shared library to be used at runtime
  -Wl,-opt[=val]  set linker option (see tcc -hh)
Debugger options:
  -g          generate runtime debug info
  -b          compile with built-in memory and bounds checker (implies -g)
  -bt N       show N callers in stack traces
Misc. options:
  -x[c|a|n]   specify type of the next infile
  -nostdinc   do not use standard system include paths
  -nostdlib   do not link with standard crt and libraries
  -Bdir       set tcc's private include/library dir
  -MD         generate dependency file for make
  -MF file    specify dependency file name
  -m32/64     defer to i386/x86_64 cross compiler
Tools:
  create library  : tcc -ar [rcsv] lib.a files
  create def file : tcc -impdef lib.dll [-v] [-o lib.def]

使用方法

方法1. 打开命令行,转到源代码目录,输入: tcc 源代码文件名 即可。
此时,会在文件夹内生成.exe文件,双击即可运行。
方法2. 此方法为常用方法
打开命令行,转到源代码目录,输入: tcc -run 源代码文件名。

配置 Sublime Text 编辑器(TCC)

在已安装好 GCC 编译器的基础上,接下来开始正式配置 Sublime Text 编辑器。

在菜单栏中依次点击“Tools -> Build System -> New Build System”,由此即可在 Sublime Text 打开一个临时文件。
删除其所有内容,并将如下内容完整地复制到该文件中:

{
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c",
    "encoding": "gbk",

    "linux":    {"shell_cmd": "tcc -o ${file_path}/${file_base_name} ${file}"},
    "osx":      {"shell_cmd": "tcc -o ${file_path}/${file_base_name} ${file}"},
    "windows":  {"shell_cmd": "tcc -o ${file_path}/${file_base_name}.exe ${file}"},

    "variants": [
        {
            "name": "Run",
            "linux":    {"shell_cmd": "tcc -run ${file}"},
            "osx":      {"shell_cmd": "tcc -run ${file}"},
            "windows":  {"cmd": ["tcc", "-run", "${file}"]},
        },
        {
            "name": "Run(CMD)",
            "linux": {
                "shell_cmd": "gnome-terminal -e 'bash -c \"echo tcc -run ${file};echo;time tcc -run \\\"${file}\\\";echo ;echo Press any key to exit...;read -n 1;exit;\"'"
            },
            "windows": {
                // "shell_cmd": "git-bash -c \"echo tcc -run ${file_name};echo;time winpty tcc -run ${file_name};echo;echo Press any key to exit...;read -n 1;exit;\"",
                "cmd": [
                    "cmd", "/c",
                    "start", "cmd", "/c", "tcc -run ${file} &echo.&pause"
                ],
            },
            "osx": {}
        }
    ]
}

解决中文乱码

ConvertToUTF8: Reload With Encoding解决的是 Sublime Text 显示的编码问题,不能解决编译生成打开的cmd窗口文字乱码问题。
应该在保存程序文件前先FileSet File Encoding ToGBKBIG5

参考

MinGW-w64安装教程——著名C/C++编译器GCC的Windows版本
如何使用Sublime Text3搭建C语言开发环境_sublime c语言_LOVE_SCENARIO的博客
Sublime Text运行C和C++程序 - 楚千羽
【cpp 开发工具】MingGW 各版本区别及安装说明 - isanthree
Windows 下 MinGW 的选择与安装 - NEGOCES
MingW-W64-builds那么多版本,他们的区别是什么呢?_Ha-Ha-Interesting的博客
Sublime Text 配置C语言开发环境 - 简书
TCC(Tiny C Compiler)安装及使用方法-CSDN博客

推荐

【全网最新、最详细】如何使用 Sublime Text 4 优雅地写C++? - 知乎