SublimeText下C编译环境的设置

最近在看一本C语言方面的书,总想找一个简单的编辑器,可以实现编译运行单个C文件。试过Eclipse和Netbeans以及code blocks(VC6在Windows7下不可用)。突然发现其实SublimeText就可以简单实现我需要的功能。其设置方法如下

1. 安装C语言编译器MinGW,并把MinGW安装目录下的bin目录添加到环境变量PATH里。详细方法参照MinGW安装和使用

2. 因为SublimeText原本的编译环境不支持非英语系统,所以要先修改SublimeText。把SublimeText安装目录下的Data\Packages\Default\exec.py的45行改成下面的代码:

# proc_env[k] = os.path.expandvars(v).encode(sys.getfilesystemencoding())
proc_env[k] = os.path.expandvars(v.decode(sys.getfilesystemencoding())).encode(sys.getfilesystemencoding())

3. 在SublimeText安装目录下的DataPackagesUser新建一个C.sublime-build(注意不要修改文件名和大小写)。因为SublimeText默认的执行不支持输入,所以我添加了一个RunInCommand,可以让程序在CMD下面执行。内容如下

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

4. 设置快捷键。在SublimeText里,打开Preferences -> Key Bindings - User,在里面添加一行{ "keys": ["ctrl+alt+shift+b"], "command": "build", "args": {"variant": "RunInCommand"} }。如果已经设置,跳过。我定义的是ctrl+alt+shift+b,也可以根据自己的定义,以下是我的 Key Bindings - User文件内容

[
    { "keys": ["ctrl+alt+shift+b"], "command": "build", "args": {"variant": "RunInCommand"} }
]

5. 测试。自己在SublimeText写一个C程序,ctrl+b为编译;ctrl+shift+b为编译后在SublimeText里显示结果;ctrl+alt+shift+b为编译后在CMD里运行。

注意:源代码路径中不能有空格和非英文字符。

17 thoughts on “SublimeText下C编译环境的设置

    1. 你用了ConvertToUTF8吧,在这种情况下,输出不是UTF8,目前我也没找到解决方法,你可以用CMD执行。按我写的步骤的话,快捷键是ctrl+alt+shift+b。

  1. 跳出cmd显示不是内部或外部命令,也不是可运行的程序或批处理文件,但是在sublime里可以运行,请博主帮忙。
    我装的是g++ 尝试把上面有gcc的换成g++但还是不行

  2. 你好, 请教个问题。 ST本身是支持C++编译的,只要把C++编译器加入到环境变量中就行了。( 嗯,我就这样做了,确实好用。) 然后因为是g++编译的, 所以我需要再用c编译,所以我重新添加了C编译。但是有个问题就是不能自动选择编译系统。 所以我想请教下怎么让ST自动选择编译系统

    1. 我用的是ST2,用上面的设置完成之后,在选择“自动选择编译器”时,文件后缀名为c的文件会自动用gcc编译,后缀名为cpp的文件会用g++编译。ST3我没有试过,不过应该也可以自动选择吧。

  3. 不行,不知道为什么我的电脑上要这样"cmd" : ["${file_path}/${file_base_name}"]才能运行,用你的就成了:
    gcc: error: D:\C: No such file or directory
    gcc: fatal error: no input files
    compilation terminated.
    [Decode error - output not utf-8]
    C++: error: /test: No such file or directory

    1. 你的文件目录里是不是有空格或者中文?
      另外我用的是Sublime Text 2,你的版本是不是不一样?

发表评论

电子邮件地址不会被公开。 必填项已用*标注