Sublime text 在为 C++ 14 创建构建系统时出错
Sublime text gives error on creating a build system for c++ 14
我在我的 Sublime Text 3 中为 C++ 14 创建了一个新的构建系统并粘贴了下面的代码并将其保存为 C++ 14。
{
"cmd":["bash", "-c", "g++ -std=c++14 -Wall '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "Run",
"cmd":["bash", "-c", "g++ -std=c++14 '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
}
]
}
但是每当我 select 这个构建(保存 C++ 14
)到 运行 我的 c++ 程序时,我的 Sublime Text 就会给出以下错误:
[WinError 2] The system cannot find the file specified
[cmd: ['bash', '-c', "g++ -std=c++14 -Wall 'C:\Users\ragha\Desktop\All_Folders\sublime_cpp\_code.cpp' -o 'C:\Users\ragha\Desktop\All_Folders\sublime_cpp/_code' && 'C:\Users\ragha\Desktop\All_Folders\sublime_cpp/_code'"]]
[dir: C:\Users\ragha\Desktop\All_Folders\sublime_cpp]
[path: C:\Python38\Scripts\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Calibre2\;C:\Program Files (x86)\Windows Kits.1\Windows Performance Toolkit\;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Java\jdk-14.0.1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Python38\python.exe;C:\Python38;C:\MinGW\bin;C:\Users\ragha\AppData\Local\Microsoft\WindowsApps;C:\src\flutter\bin;C:\MinGW\bin;]
[Finished]
注意 - 我已经安装了 MinGW C++ 安装程序。我已将 C:/MinGw/bin 添加到 Global Variables as well as System Variables
中的路径。当我 运行 使用 C++ single file
构建时,我的 C++ 程序 运行 运行良好。我的系统中没有任何 WSL。
如何解决问题。
请帮忙!
这里有一个可以尝试的新构建系统:
{
"shell_cmd": "bash -c \"g++ -std=c++14 -Wall '${file}' -o '${file_path}/${file_base_name}.exe' && '${file_path}/${file_base_name}'\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants": [
{
"name": "Run",
"cmd": ["bash", "-c", "'${file_path}/${file_base_name}'"]
}]
}
"shell_cmd"
将其所有参数作为一个字符串,因此我根据需要将它们与转义双引号组合在一起,并进行了一些调整,使其 运行s,至少对于我.
我还将您的 Run
部分更改为仅 运行 already-compiled 二进制文件。在您的原始版本中,您在 运行ning 之前再次编译。您会注意到我在这里使用了 "cmd"
函数,其中参数是一个 comma-separated 字符串数组。
请注意,此构建系统仍然 运行 是 Sublime 控制台内的二进制文件,因此您无法执行某些操作,例如请求用户输入。但是,如果您想 运行 您的程序在单独的命令提示符下接受用户输入,例如,使用下面的构建系统:
{
"shell_cmd": "g++ -std=c++14 -Wall ${file} -o ${file_path}/${file_base_name}.exe && start cmd /k ${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", "/k", "$file_base_name"],
"working_dir": "${file_path}",
"shell": true,
}]
}
编辑
如果你只是想编译 运行 你的程序 inside Sublime,这应该可行:
{
"shell_cmd": "g++ -std=c++14 -Wall ${file} -o ${file_path}/${file_base_name}.exe && ${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": ["$file_base_name"],
"working_dir": "${file_path}",
"shell": true,
}]
}
我在我的 Sublime Text 3 中为 C++ 14 创建了一个新的构建系统并粘贴了下面的代码并将其保存为 C++ 14。
{
"cmd":["bash", "-c", "g++ -std=c++14 -Wall '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants":
[
{
"name": "Run",
"cmd":["bash", "-c", "g++ -std=c++14 '${file}' -o '${file_path}/${file_base_name}' && '${file_path}/${file_base_name}'"]
}
]
}
但是每当我 select 这个构建(保存 C++ 14
)到 运行 我的 c++ 程序时,我的 Sublime Text 就会给出以下错误:
[WinError 2] The system cannot find the file specified
[cmd: ['bash', '-c', "g++ -std=c++14 -Wall 'C:\Users\ragha\Desktop\All_Folders\sublime_cpp\_code.cpp' -o 'C:\Users\ragha\Desktop\All_Folders\sublime_cpp/_code' && 'C:\Users\ragha\Desktop\All_Folders\sublime_cpp/_code'"]]
[dir: C:\Users\ragha\Desktop\All_Folders\sublime_cpp]
[path: C:\Python38\Scripts\;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Calibre2\;C:\Program Files (x86)\Windows Kits.1\Windows Performance Toolkit\;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Java\jdk-14.0.1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Python38\python.exe;C:\Python38;C:\MinGW\bin;C:\Users\ragha\AppData\Local\Microsoft\WindowsApps;C:\src\flutter\bin;C:\MinGW\bin;]
[Finished]
注意 - 我已经安装了 MinGW C++ 安装程序。我已将 C:/MinGw/bin 添加到 Global Variables as well as System Variables
中的路径。当我 运行 使用 C++ single file
构建时,我的 C++ 程序 运行 运行良好。我的系统中没有任何 WSL。
如何解决问题。
请帮忙!
这里有一个可以尝试的新构建系统:
{
"shell_cmd": "bash -c \"g++ -std=c++14 -Wall '${file}' -o '${file_path}/${file_base_name}.exe' && '${file_path}/${file_base_name}'\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"variants": [
{
"name": "Run",
"cmd": ["bash", "-c", "'${file_path}/${file_base_name}'"]
}]
}
"shell_cmd"
将其所有参数作为一个字符串,因此我根据需要将它们与转义双引号组合在一起,并进行了一些调整,使其 运行s,至少对于我.
我还将您的 Run
部分更改为仅 运行 already-compiled 二进制文件。在您的原始版本中,您在 运行ning 之前再次编译。您会注意到我在这里使用了 "cmd"
函数,其中参数是一个 comma-separated 字符串数组。
请注意,此构建系统仍然 运行 是 Sublime 控制台内的二进制文件,因此您无法执行某些操作,例如请求用户输入。但是,如果您想 运行 您的程序在单独的命令提示符下接受用户输入,例如,使用下面的构建系统:
{
"shell_cmd": "g++ -std=c++14 -Wall ${file} -o ${file_path}/${file_base_name}.exe && start cmd /k ${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", "/k", "$file_base_name"],
"working_dir": "${file_path}",
"shell": true,
}]
}
编辑
如果你只是想编译 运行 你的程序 inside Sublime,这应该可行:
{
"shell_cmd": "g++ -std=c++14 -Wall ${file} -o ${file_path}/${file_base_name}.exe && ${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": ["$file_base_name"],
"working_dir": "${file_path}",
"shell": true,
}]
}