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行改成下面的代码:

Python
# 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下面执行。内容如下

Python
{
    "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文件内容

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

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

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

转载请注明:宇托的狗窝 » SublimeText下C编译环境的设置

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (17)

  1. 请问那个DataPackagesDefaultexec.py在哪呀,为什么我只有PackageSetup.pyc
    达瓦达瓦2016-09-16 19:11:12回复
    • 对不起,这个写错了,应该是Data\Packages\Default\exec.py。另外,在Sublime Text 3里没有这个文件。
      宇托2016-09-21 23:34:51回复
  2. 不行,不知道为什么我的电脑上要这样"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
    锦瑟2015-03-12 22:39:23回复
    • 你的文件目录里是不是有空格或者中文?
      另外我用的是Sublime Text 2,你的版本是不是不一样?
      宇托2015-03-13 00:52:02回复
      • 我也是sbulime text 2文件目录是D:\C&C++,系统windows7 ultimate x64,文件名test.c
        锦瑟2015-03-13 14:25:46回复
        • 目录里不能有&。你把文件目录重命名为D:\C_C++应该就没问题了
          宇托2015-03-14 11:19:35回复
  3. 你好, 请教个问题。 ST本身是支持C++编译的,只要把C++编译器加入到环境变量中就行了。( 嗯,我就这样做了,确实好用。) 然后因为是g++编译的, 所以我需要再用c编译,所以我重新添加了C编译。但是有个问题就是不能自动选择编译系统。 所以我想请教下怎么让ST自动选择编译系统
    xu2015-01-29 01:05:58回复
    • 我用的是ST2,用上面的设置完成之后,在选择“自动选择编译器”时,文件后缀名为c的文件会自动用gcc编译,后缀名为cpp的文件会用g++编译。ST3我没有试过,不过应该也可以自动选择吧。
      宇托2015-01-29 13:26:07回复
  4. 跳出cmd显示不是内部或外部命令,也不是可运行的程序或批处理文件,但是在sublime里可以运行,请博主帮忙。
    我装的是g++ 尝试把上面有gcc的换成g++但还是不行
    jason2014-01-25 18:23:13回复
    • GCC的文件目录和C文件的目录里有空格或者中文吗?
      yutuo2014-01-27 11:57:00回复
  5. 32位系统无法使用,怎么破
    小荆2014-01-24 18:33:57回复
    • 32位也应该是没问题的,你下载的版本是32位的吗?
      yutuo2014-01-27 11:57:36回复
  6. 我下了sublime 安装目录里面没有你说的那些文件夹和文件?怎么安装》?
    fdsfsd2014-01-22 18:53:46回复
    • 摸索着弄好了,谢谢你的教程!~
      fdsfsd2014-01-22 19:56:25回复
      • 怎么弄的 教教我
        luffy05202014-01-23 10:30:11回复
  7. 出现这个如何解决?[Decode error - output not utf-8]
    harry2013-09-20 21:52:31回复
    • 你用了ConvertToUTF8吧,在这种情况下,输出不是UTF8,目前我也没找到解决方法,你可以用CMD执行。按我写的步骤的话,快捷键是ctrl+alt+shift+b。
      yutuo2013-10-03 11:43:18回复