我有一个可以使用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}"]
}
]
}
答案 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}}文件重命名为明确不同的文件,然后从该名称下的构建菜单中选择它。