这个构建系统不会工作,sublime text 3

This build system wont work, sublime text 3

我有一个使用 C++ 的构建系统。我安装了 MinGW,我在路径中有它,但是当我 运行 它 (ctrl + b) 时,在命令提示符中它显示:

'E:\Projects\C++ Projects' is not recognized as an internal
 or external command, operable program or batch file.

我不明白!几个月前我就开始工作了,现在当我在我的新 PC 上尝试它时,它不起作用。我的一切都设置得完全一样。如果有帮助,这里是 sublime-build JSON 代码:

{
    "cmd": ["C:\MinGW\bin\g++", "${file}", "-o", "${file_path}\${file_base_name}"],
    "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
    "working_dir": "${file_path}",
    "selector": "source.c, source.c++",
    "shell": "true",
    "variants":
    [
        {
            "name": "Run",
            "cmd": ["start", "cmd.exe", "@cmd", "/k", "${file_path}\${file_base_name}"]
        }
    ]
}

我只看到这个构建系统存在两个问题,因为它在此处列出,可能会阻止它 运行 您的程序。

首先是在Run变体中,要运行的程序路径指定为:

"${file_path}\${file_base_name}"

由于文件是JSON,\在加载JSON时被转换为单个\字符,然后当Sublime 运行s 命令,它看到 $,这意味着你想要一个文字 $ 字符,因此 ${file_base_name} 不会扩展。

例如,在我的机器上我看到这个错误:

'C:\Users\tmartin\Desktop${file_base_name}' is not recognized 
as an internal or external command, operable program or 
batch file.

你看到的错误不包括那个,这会让我认为这不是实际选择的构建,或者你粘贴到这里的构建与您实际使用的那个。

无论如何,构建需要在特定情况下将路径分隔符加倍:

"${file_path}\\${file_base_name}"

现在,第一个 \ 在加载时转换为 \,第二个也是,然后 Sublime 看到 \$ 并正确地假设您打算放置一个路径分隔符,后跟一个变量示例,它将错误消息转换为此:

'C:\Users\tmartin\Desktop\test' is not recognized as an 
internal or external command, operable program or batch file.

第二个 "Problem" 是 Run 变体不尝试编译程序,它只尝试 运行 它。这意味着在您第一次构建它之前,当您尝试 运行 它 Windows 找不到它并且会给您这个错误。

因此,如果您还没有尝试过,您应该先切换到普通变体并编译您的程序,然后再切换到 Run 变体并重试。

就是说,您收到的有关 Windows 无法找到该程序的错误消息只有在您尝试 运行 的程序名为 [=25] 时才有意义=].

这听起来更像是您的项目将存储在其中的文件夹的名称,而不是项目本身的名称,这也让我觉得您可能没有使用您认为的构建。

为了绝对确定,我会尝试将 sublime-build 文件重命名为明确不同的名称,然后从构建菜单中以该名称选择它。