如何在Sublime Text 2(MAC OS X)上运行和编译.c文件

6

我现在在学校学习C语言,老师让我使用codeblocks作为IDE,但我觉得codeblocks有点丑,因此我选择了Sublime Text 2,这是最好的IDE/文本编辑器。

目前,我通过Sublime编写代码,将其保存,然后通过mac os终端(gcc)进行编译,再在终端上运行它……

我想知道的是,如果可能的话,如何从Sublime中正确完成这个过程,使用它的控制台或插件(或其他东西),换句话说,我想知道是否可能只需点击几下就能编译和运行我的.c文件……(目前我只写控制台应用程序)

我已经阅读了一些有关这个主题的帖子,但没有一个帮助我解决这个问题。


这可能会有帮助:http://sublimetext.info/docs/en/reference/build_systems.html - rullof
3个回答

7
一个基本的C构建文件可能看起来像这样:

{   
"cmd" : ["/path/to/gcc", "$file_name", "-o", "${file_base_name}", "-lgsl", "-lgslcblas", "-lm" , "-Wall"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path",

"variants":
    [
        {
            "name": "Run",
            "cmd": ["bash", "-c", "/path/to/gcc '${file}' -Wall -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
        }
    ]
}

编译只需按下command+ b键。

编译并运行则需按下command+ shift+b键。

唯一需要做的是将GCC路径和使用的库(我在此示例中留下了一些GSL内容)添加进去。 $_variables是Sublime Build System变量,不应更改。有关这些变量的更多信息,请查看此处

可以将实际的构建系统文件放置于此处:

~/Library/Application Support/Sublime Text 2/Packages/User/C.sublime-build

那么基本上我只需要用实际路径替换 'path/to/gcc',就可以了吗? - jbernardo
是的,还要附上你的代码可能需要的任何其他库的链接。 - AGS
2
我做了所有的事情,但是它给了我一个错误:'clang: error: no input files',之后什么也没有发生,这可能是什么问题? - jbernardo
请提供您实际构建文件的Gist链接。 - AGS
我在这方面有点新手,什么是gist?你能再详细一些,告诉我该做什么吗? - jbernardo
这个很好用。谢谢你。(按照你说的,删除“-lgsl”和“-lgslcblas”。) - vwvan

3

我使用以下内容作为.sublime-build文件来编译和运行C代码。基本上是对C++代码的修改。这个方法对我起到了作用。

{
"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": ["bash", "-c", "gcc '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
    }
]
}

0
如果您正在使用 makefile,您可以使用类似以下代码的内容:
{   
"cmd" : ["/usr/bin/make"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path",

"variants":
    [
        {
            "name": "Run",
            "cmd": ["bash", "-c", "/usr/bin/make && '${file_path}/${file_base_name}'"]
        }
    ]
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接