如何在崇高文本3中编译和运行C?

时间:2014-06-14 23:51:51

标签: c gcc sublimetext3 ubuntu-14.04

我想在ubuntu 14.04上的sublime text 3中编译和运行C程序。目前正在使用gcc编译程序,使用执行命令的sublime text 3(参见下面的代码),但我想知道是否可以让程序执行输出显示在sublime文本控制台上。

这是我目前用sublime text 3

编译C程序的方法

c_compile.sublime-构建

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path"
}

我已尝试像这样添加&& ./${file_base_name}

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}","&&","./${file_base_name}"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path"
}

但它给了我这个错误:

gcc: error: &&: No such file or directory
[Finished in 0.0s with exit code 1]
[cmd: ['gcc', 'Ex1-6.c', '-o', 'Ex1-6', '&&', './Ex1-6']]
[dir: /home/admin/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

这是我正在使用的简单C程序:

Ex1-6.c

#include <stdio.h>

main(){
    printf("Hello world");
}

我在网上搜索了一个解决方案,但建议的答案要么只允许编译(这部分已经为我工作了),要么不起作用。知道如何修复此代码,以便在sublime文本3中编译和运行(如果可能)。谢谢

根据user2357112建议编辑#1:

shell更改为true后:

{
"cmd" : ["gcc", "$file_name", "-o", "${file_base_name}","&&","./${file_base_name}"],
"selector" : "source.c",
"shell":true,
"working_dir" : "$file_path"
}

这就是我得到的:

gcc: fatal error: no input files
compilation terminated.
[Finished in 0.0s with exit code 4]
[cmd: ['gcc', 'Ex1-6.c', '-o', 'Ex1-6', '&&', './Ex1-6']]
[dir: /home/admin/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

根据Eugene K的建议编辑#2:

我尝试更改cmd以仅运行程序:

{
"cmd" : ["./${file_base_name}"],
"selector" : "source.c",
"shell":false,
"working_dir" : "$file_path"
}

它成功运行并使用一些代码在控制台上打印输出:

Hello world
[Finished in 0.0s with exit code 12]
[cmd: ['./Ex1-6']]
[dir: /home/amir/Desktop/C/book/chap1]
[path: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games]

到目前为止,cmd要么编译要么运行,但不能同时进行,希望可以通过单个命令进行编译和运行。

13 个答案:

答案 0 :(得分:42)

您是否尝试过用单个字符串写出整个命令?

{
"cmd" : ["gcc $file_name -o ${file_base_name} && ./${file_base_name}"],
"selector" : "source.c",
"shell": true,
"working_dir" : "$file_path"
}

我相信(这里是半猜测),ST3将第一个参数作为&#34;程序&#34;并将其他字符串传递给&#34;参数&#34;。 https://docs.python.org/2/library/subprocess.html#subprocess.Popen

答案 1 :(得分:26)

对于实现Run菜单命令的sublime构建系统:

  • 转到工具 - &gt;构建系统 - &gt;新构建系统...


  • 创建文件~/.config/sublime-text-3/Packages/User/GCC.sublime-build

并插入此内容:

{
"shell_cmd" : "gcc $file_name -o ${file_base_name}",
"working_dir" : "$file_path",
"variants":
  [
    {
      "name": "Run",
      "shell_cmd": "gcc $file_name -o ${file_base_name} && ${file_path}/${file_base_name}"
    }
  ]
}

*此示例使用GCC编译器。您可以使用您选择的编译器替换gcc

答案 2 :(得分:3)

我们可以在Sublime Text中编译C的代码,并且可以打印一些值或字符串,但接受来自用户的输入。 (直到我知道......我确信编译但不是关于给定输入的输出。)如果您使用的是Windows,则必须为Sublime Text和GCC编译器设置环境变量。

答案 3 :(得分:1)

指示基于“icemelon”帖子。 链接到帖子:

how-do-i-compile-and-run-a-c-program-in-sublime-text-2

使用以下链接了解如何在您的操作系统上设置环境变量:

c_environment_setup

以下说明在Windows 8.1系统和Sublime Text 3 - build 3065上进行了测试。

1)安装MinGW。 2)在“PATH环境变量”中添加“MinGW \ bin”的路径。

“系统属性 - &gt;高级 - &gt;环境”变量并有更新“PATH”变量。

3)然后通过“命令提示符”中的以下命令检查您的PATH环境变量:

echo %path%

4)将新的构建系统添加到Sublime Text。

我的下面代码版本(“C.sublime-build”)。

链接到代码:

C.sublime-build

// Put this file here:
// "C:\Users\[User Name]\AppData\Roaming\Sublime Text 3\Packages\User"
// Use "Ctrl+B" to Build and "Crtl+Shift+B" to Run the project.
// OR use "Tools -> Build System -> New Build System..." and put the code there.

{
    "cmd" : ["gcc", "$file_name", "-o", "${file_base_name}.exe"],

    // Doesn't work, sublime text 3, Windows 8.1    
    // "cmd" : ["gcc $file_name -o ${file_base_name}"],

    "selector" : "source.c",
    "shell": true,
    "working_dir" : "$file_path",

    // You could add path to your gcc compiler this and don't add path to your "PATH environment variable"
    // "path" : "C:\\MinGW\\bin"

    "variants" : [

        { "name": "Run",
          "cmd" : ["${file_base_name}.exe"]
        }
    ]
}

答案 4 :(得分:1)

sublime的最新版本甚至允许直接命令而不是双引号。请尝试以下代码来构建系统

{
    "cmd" : ["gcc $file_name -o ${file_base_name} && ./${file_base_name}"],
    "selector" : "source.c",
    "shell": true,
    "working_dir" : "$file_path",
}

答案 5 :(得分:1)

在互联网上进行了严格的 代码搜索 会话之后,我终于想出了一个解决方案,让您编译+运行您的C在专用终端窗口中的 C99 中代码“立即一起”。我知道,有些人不喜欢 C99 。我也不喜欢几个人。

在大多数情况下,Sublime 编译并运行代码,但在C90或更低版本中。因此,如果你特别希望它是C99 ,这就是你要走的路。

注意顺便说一下,我在Windows机器上做过这个,不能保证给别人!它可能无法在那里工作。

<强> 1。在Sublime中创建一个新的构建系统: 工具&gt;构建系统&gt;新建系统......

New Build System

<强> 2。将创建一个名为untitled.sublime-build的新文件。

最有可能的是,Sublime会为你打开它。

如果没有,请转到偏好设置&gt;浏览包裹&gt;用户

Open new sublime-build

如果文件untitled.sublime-build 存在,则将其打开, 如果不存在,则手动创建将其打开

第3。将以下代码复制并粘贴到上述untitled.sublime-build文件中并保存。

{
    "windows":
    {
        "cmd": ["gcc","-std=c99" ,"$file_name","-o", "${file_base_name}.exe", "-lm", "-Wall", "&","start", "${file_base_name}.exe"]
    },
    "selector" : "source.c",
    "shell": true,
    "working_dir" : "$file_path",
}

关闭文件。你差不多完成了!

<强> 4。最后将您的文件从untitled.sublime-build重命名为myC.sublime-build ,或者您也可以在此处展示您的创造力。只需保持文件扩展名相同即可。

<强> 5。最后将当前构建系统设置为您在上一步中编写的文件名。在这种情况下,它是 myC

Update current build system

瞧! 通过 工具&gt;使用C99编译+运行您的C代码构建 ,或者只需按Ctrl + B

即可

答案 6 :(得分:1)

最好的方法是为项目使用Makefile,ST3会自动检测项目的构建系统。例如。如果你按shift + ctrl / cmd + B,你会看到: Make

答案 7 :(得分:0)

尝试在项目foler中编写名为run.sh的shell脚本

#!/bin/bash
./YOUR_EXECUTIVE_FILE
...AND OTHER THING

并创建一个Build System来编译并执行它:

{
      "shell_cmd": "make all && ./run.sh"
}
不要忘记$chmod +x run.sh

做一件事,做得好:)

答案 8 :(得分:0)

你在linux上使用sublime文本吗? 我遇到了同样的问题,它解决了! 这是我的c.sublime-build:

{
 "shell_cmd" : "gcc $file_name -o $file_base_name && ./$file_base_name", 
 "selector" : "source.c",
 "shell":true,
 "working_dir" : "$file_path"
}

答案 9 :(得分:0)

使用Sublime Text 3

在Windows 10计算机上为我工作的代码
 {
 "cmd" : "gcc $file_name -o ${file_base_name}",
 "selector" : "source.c",
 "shell" : true,
 "working_dir" : "$file_path",
 "variants":
    [
     {
      "name": "Run",
      "cmd": "${file_base_name}"
     }
   ]
}

答案 10 :(得分:0)

在Sublime Text 3中....尝试将上面的代码改为此,注意添加&#34;开始&#34; .....

&#34;变体&#34; :[

    { "name": "Run",
      "cmd" : ["start", "${file_base_name}.exe"]
    } 

答案 11 :(得分:0)

如果您使用C或C ++语言编写代码。我认为我们很幸运,因为我们可以使用文件输入。它非常方便清晰。我经常这样做。 这是实现它的论据:

{
freopen("inputfile", "r", stdin);
}

请注意,inputfile必须与源代码文件位于同一目录,r代表读取。

答案 12 :(得分:0)

{
 "cmd": ["gcc", "-Wall", "-ansi", "-pedantic-errors", "$file_name", "-o", 
 "${file_base_name}.exe", "&&", "start", "cmd", "/k" , "$file_base_name"],
 "selector": "source.c",
 "working_dir": "${file_path}",
 "shell": true
}

它接受输入并在命令提示符下显示输出。