【问题标题】:Building C++ files on Sublime Text 3 not ending在 Sublime Text 3 上构建 C++ 文件没有结束
【发布时间】:2016-06-22 16:09:32
【问题描述】:

如您所知,您可以在 Sublime 中构建文件:

1) 通过 Ctrl+Shift+B (Build With) -> C++ Single File

2) 通过 Ctrl+Shift+B (Build With) -> C++ Single File - Run

通过第一个选项我没有问题:文件编译,Sublime 确认,我没有遇到任何问题。

如果我采用第二种方式,Sublime 将无法停止构建过程。单击构建后,立即在任务管理器上创建了一个进程 '(file_name).exe(32 bit)',但是 .exe 程序永远不会从 Sublime 自动运行(我必须自己运行它) ,并且 Sublime 从不确认构建。

我该如何解决这个问题?

这里是 sublime-build 文件:

{
    "shell_cmd": "g++ \"${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",
            "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
        }
    ]
}

【问题讨论】:

  • edit您的问题并提供您的.sublime-build文件的内容。
  • @MattDMo 刚刚做到了。
  • 我假设您运行了构建系统的“运行”变体?如果你的程序没有正常退出,Sublime 仍然认为它正在运行。 Windows 是否仍然认为它正在运行 - 即,它是否显示在任务管理器中,或者通过从 Cygwin/bash shell 运行ps -ax | grep programname.exe,假设您安装了它。如果是这样,请尝试通过任务管理器(您可能需要以管理员权限运行它)或通过更早从ps 命令获取 PID(进程 ID)并运行 kill -9 123456 或任何 PID 来杀死所有实例.
  • @MattDMo 感谢您指出“运行”变体。做了一点检查,发现与正常变体的行为有所不同。我现在从头开始重新提出这个问题。

标签: c++ build sublimetext3 sublime-build


【解决方案1】:

尝试像这样编辑“变体”部分:

"variants":
[
    {
        "name": "Run",
        "shell_cmd": "g++ \"${file}\" -o \"${file_path}/${file_base_name}\" && start cmd /k \"${file_path}/${file_base_name}\""
    }
]

这将启动一个单独的 cmd.exe 实例并在其中运行您新建的可执行文件。您的构建未成功的一个可能原因是 .exe 可能正在等待输入,而 Sublime 的控制台不允许(它不是真正的终端)。

【讨论】:

  • 你是对的,它正在等待输入。我复制了上面的代码,但现在出现了这个错误:“shell_cmd or cmd is required [cmd: None] ...”我应该添加一个系统变量 cmd 指向 cmd 吗?或者可能将 cmd 更改为 ComSpec,因为它已经指向 cmd.exe 的位置?
  • @devidduma 我错误地删除了方括号。现在查看 JSON 并将 that 添加到构建系统。该错误与格式有关,而不是 cmd.exe 本身。 "variants" 是一个数组,而不是一个字典。
  • 我不知道我必须安装 Package Control 和 PackageResourceViewer 来修改文件,我试图自己编辑它们。现在一切正常,非常感谢
  • @devidduma 哦,对不起。我假设你已经有了 PackageResourceViewer 的构建文件的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多