这个构建系统不会工作,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
文件重命名为明确不同的名称,然后从构建菜单中以该名称选择它。
我有一个使用 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
文件重命名为明确不同的名称,然后从构建菜单中以该名称选择它。