我想在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要么编译要么运行,但不能同时进行,希望可以通过单个命令进行编译和运行。
答案 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)
或
~/.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
使用以下链接了解如何在您的操作系统上设置环境变量:
以下说明在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”)。
链接到代码:
// 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;新建系统......
<强> 2。将创建一个名为untitled.sublime-build
的新文件。
最有可能的是,Sublime会为你打开它。
如果没有,请转到偏好设置&gt;浏览包裹&gt;用户强>
如果文件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
瞧!
通过 工具&gt;使用C99编译+运行您的C代码构建 ,或者只需按Ctrl + B
答案 6 :(得分:1)
最好的方法是为项目使用Makefile,ST3会自动检测项目的构建系统。例如。如果你按shift + ctrl / cmd + B,你会看到:
答案 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
}
它接受输入并在命令提示符下显示输出。