这个构建系统无法工作,升华文本3

时间:2018-01-28 22:39:35

标签: build sublimetext3 mingw-w64

我有一个可以使用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}"]
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

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

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

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

由于文件是JSON,因此在加载JSON时\\转换为单个\字符,然后当Sublime运行命令时,它会看到\$所需的$表示您想要一个文字${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}"

您所看到的错误并不包含这些错误,这会让我觉得这不是实际选择的构建版本,也不是您粘贴的构建版块这里与你实际使用的完全相同。

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

\\

现在第一个\在加载时转换为\\$,第二个转换为'C:\Users\tmartin\Desktop\test' is not recognized as an internal or external command, operable program or batch file. ,然后Sublime看到Run并且正确地假设您打算放置一个路径分隔符,后跟一个变量示例,它将错误信息转换为:

Run

第二个"问题"是C++ Projects变体没有尝试编译程序,它只是尝试运行它。这意味着,在您第一次构建它之前,当您尝试运行它时,Windows无法找到它并且会给您这个错误。

因此,如果您还没有尝试过,请先切换到普通版本并编译您的程序,然后切换到sublime-build版本并再试一次。

也就是说,如果您尝试运行的程序名为 var p = new ECParameters(); p.Curve = System.Security.Cryptography.ECCurve.NamedCurves.nistP256; p.D = Utility.HexToBytes("FF46D661B3505B4BE84CF2FEB0A34B17FE0AA690FACBC0BBC6D6D526A14CE677"); var point2 = new System.Security.Cryptography.ECPoint(); point2.X = Utility.HexToBytes("8D11BB84CC509F6AA27314926C818522A8441E64251B0F6EAAF76947378C2A7A"); point2.Y = Utility.HexToBytes("45FA696E17A3A172F83CB57F617E810A6E1AF686B9CED06E8E51C587CD83900D"); p.Q = point2; p.Validate(); var ecdh = ECDiffieHellman.Create(p); ,那么您在Windows上无法找到该程序的错误消息才有意义。

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

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