我目前使用ST3下面的编译系统编译的.cpp代码
{
"cmd": ["mingw32-g++.exe", "-c", "$file", "-o", "${file_path}/${file_base_name}.o", "&&",
"mingw32-g++.exe", "-o", "${file_path}/${file_base_name}.exe", "${file_path}/${file_base_name}.o", "&&",
"start","${file_path}/${file_base_name}.exe"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c++,source.cpp",
"shell": true
}
我所面临的问题是,我需要键入的输入逐个放入CMD,这是耗时的。
是否有可能以某种方式调整上述构建系统执行下面给出了类似的行动呢?
CMD上。
${file_base_name}.exe < TestCases.txt > TestAnswers.txt
这是可能的标准方法,这就是使用输入和输出重定向的命令行上为你的问题本身概述。然而,为了使这种工作,你需要改变你如何定义你的构建。
使用cmd
和shell
在一起(如你正在做),你指定命令行程序运行和参数,它应该得到(这是你现在在做什么)。
你想在这里用的是shell_cmd
,在这种情况下,您提供的代表,你会在命令提示符下,哪一个更容易进入整体它的完整的命令行一个字符串。
没有进入所涉及的底层机制的基本详细,两者处理,由Python运行时执行不同,但使用shell_cmd
您的命令行直接递给命令处理器来处理。
修改构建的一个例子是这样的:
{
"shell_cmd": "mingw32-g++.exe \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\" < Input.txt > Answers.txt",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
}
这里要注意的第一件事情是因为shell_cmd
是一个字符串,所有的文件名需要被包裹在"quotes"
防范包含空格的文件名,这是不是您在使用cmd
这样做,因为在每一个案件的东西的参数是一个单独的字符串。
此外,该命令行已经清理了这里一点,因为你应该能够直接编译文件可执行,无需如果你正在使用gcc / MinGW的执行单独的连接步骤(如果你愿意,这一步很简单够加回虽然)。
这里定义,工作目录设置为正在编译的文件存放的路径,这意味着输入文件的命令是寻找需要在该文件夹中,这就是在输出文件将被创建。
如果你打开输出文件,将崇高每次运行构建时重新加载它(你可能会或可能不会提示,根据自己的喜好)。
大量的命中和试用后,我想出了以下的解决这个问题。
更新构建系统
{
"cmd": ["C++_compile_Sublime.bat", "$file"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++,source.cpp,source.cc",
"shell": true
}
和C ++ _ compile_Sublime.bat是如下
mingw32-g++.exe -c %~n1.c -o %~n1.o
mingw32-g++.exe -o %~n1.exe %~n1.o
cls
%~n1.exe < Input.txt > Output.txt
以及由@OdatNurd指出“shell_cmd”工作只是完美
注:C ++ _ compile_Sublime.bat必须在环境变量