我正在寻找一个 sublime text 3 构建系统,它可以在 C++14 中运行我的程序,使用终端从用户那里获取输入,并在终端中显示我的输出。经过一些在线搜索后,我在网上找到了这样一个构建系统,它可以做到这一点。构建系统如下:
{
/* Custom Build file for C++14, supports input from user.
* Default terminal emulator is gnome-terminal. You can change it to xterm or
* terminator by changing "gnome-terminal -x" in "cmd" in "variants" field to
* "xterm -e" or "terminator -x".
*/
"cmd": ["g++", "-std=c++14", "$file", "-o", "${file_path}/${file_base_name}"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++, source.cxx, source.cpp",
"variants":
[
{
"name": "Run",
"cmd": ["bash", "-c", "g++ -std=c++14 '${file}' -o '${file_path}/${file_base_name}' && gnome-terminal -x bash -c '\"${file_path}/${file_base_name}\" ; read'"]
}
]
}
它完美地运行我的代码并完成我正在查看的所有内容。但我在 sublime 控制台上收到一条消息,其中写道:
# Option "-x" is deprecated and might be removed in a later version of gnome-terminal.
# Use "-- " to terminate the options and put the command line to execute after it.
[Finished in 1.3s]
这是什么意思?我如何通过编辑上面的 sublime 构建来解决这个问题?
警告消息是完全不言自明的。在“运行”部分,命令是
"cmd": ["bash", "-c", "g++ -std=c++14 '${file}' -o '${file_path}/${file_base_name}' && gnome-terminal -x bash -c '\"${file_path}/${file_base_name}\" ; read'"]
在
&&
之后,无需使用 gnome-terminal -x bash -c ...
,只需添加 gnome-terminal -- bash -c ...
即可完成设置。
在你的 Sublime Text 窗口上...
{
"target": "terminus_exec",
"cancel": "terminus_cancel_build",
"focus": true,
"cmd": ["g++", "-std=c++14", "${file}", "-o", "${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}'"]
}]
}