【问题标题】:Compile and run C in Sublime Text 2 (gcc) [duplicate]在 Sublime Text 2 (gcc) 中编译并运行 C [重复]
【发布时间】:2016-01-10 10:18:23
【问题描述】:

我在我的 Windows 8.1 机器上从 MinGW 网站安装了 gcc(仅 gcc),如果从命令提示符或 PowerShell 中使用,它可以正常工作。 但是我在使用 Sublime Text 2 编译和运行 C 程序时遇到了麻烦。如果我只编译它(工具 -> 构建)它可以完美地工作,并且我可以根据需要获得我的可执行文件。 .exe 有效(即,如果我手动运行它,它可以完美运行)。问题是,如果我执行工具 -> 运行,Sublime Text 将不起作用。我在 Sublime 中收到此错误消息:

[Error 2] The system cannot find the file specified
[cmd:  [u'bash', u'-c', u"gcc 'E:\\Desktop\\Test\\HelloWorld.c' -ansi -pedantic -Wall -o 'E:\\Desktop\\Test/HelloWorld' && 'E:\\Desktop\\Test/HelloWorld'"]]
[dir:  E:\Desktop\Test]
[path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files (x86)\Skype\Phone\;C:\MinGW\bin]
[Finished]

一位教授向我们提供了我用来创建 Sublime Build 文件的以下代码(他使用的是 Mac,这可能是问题吗?):

{
    "cmd": ["gcc", "-ansi", "-pedantic", "-Wall", "${file}", "-o", "${file_path}/${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",

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

我尝试查找以前提出的问题并找到了几个,但没有一个包含我想使用的 gcc 开关:-ansi -pedantic -Wall.另外问题中提供的答案打开了一个新的命令提示符窗口来执行 .exe 文件,而我想在 Sublime 自己的输出窗口中查看执行情况。

提前致谢

【问题讨论】:

  • 看起来您确实想在 Windows 计算机上使用 bash
  • 是的,我也认为这可能是问题(引用我的问题“他使用 Mac,这可能是问题吗?”)但我不知道解决方案..
  • 好吧,标准的 Windows 命令行解释器在过去的十年里一直是 cmd(我认为它甚至需要相同的标志 -c - 查一下)。我不知道 Powershell 是否还有其他名称,以及您是否需要它。
  • 我确实注意到您在失败命令中的最后两个条目的文件名混合了反斜杠和正斜杠。我根本不知道 SublimeText,但是大多数系统,即使是那些可以适应任何一种斜线类型的系统,都不喜欢混合它们。尝试将构建文件从 '${file_path}/${file_base_name}' 更改为 '${file_path}\\${file_base_name}'。
  • 如果前面的答案没有包含您想要的开关,那么只需添加它们。您无需提出全新的问题。

标签: c windows gcc sublimetext2


【解决方案1】:

正如this article 所述,您可以这样创建自己的构建系统文件:

{
    "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}.exe", "-ansi", "-pedantic", "-Wall"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.cpp, source.c++",
    "path": "C:/PATH/TO/GCC/OR/MINGW/bin",
    "shell": true,
    "variants": [
        {
            "name": "Run",
            "cmd": ["gcc", "${file}", "-o", "${file_path}/${file_base_name}.exe", "-ansi", "-pedantic", "-Wall", "&", "${file_path}/${file_base_name}.exe"]
        }
    ]
}

【讨论】:

  • 不幸的是,该网站只显示了如何使用 g++ 而不是 gcc(它使用 MinG-w64 fork,而不是原始的 MinGW。)幸运的是,经过反复试验,我设法结合了你给我的答案使用教授给我的内容,并提供了一个功能齐全的构建系统文件(显示在下一条评论中以避免超出字符限制)。非常感谢您的回复!
  • { "cmd": ["gcc", "-ansi", "-pedantic", "-Wall", "${file}", "-o", "${file_path} /${file_base_name}"], "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$ ", "working_dir": "${file_path}", "selector": "source.c, source.cpp, source.c++", "shell": true, "variants": [ { "cmd" : ["$ file_base_name"], "name": "运行" } ] }
  • 我刚刚把它改成gcc ;)(如果你估计问题已经回答,请考虑这样标记)
猜你喜欢
  • 2012-05-25
  • 2013-01-15
  • 2012-05-20
  • 2014-03-13
  • 2014-08-05
  • 2014-02-07
  • 2014-11-16
  • 2013-04-13
  • 1970-01-01
相关资源
最近更新 更多