Это возможно стандартным способом, который заключается в использовании перенаправления ввода и вывода в командной строке, как описано в самом вашем вопросе.Однако для того, чтобы это работало, вам нужно изменить способ определения вашей сборки.
Используя cmd
и shell
вместе (как вы делаете в настоящее время), вы задаете командную строку какпрограмма для запуска и аргументы, которые она должна получить (это то, что вы делаете сейчас).
Здесь вы хотите использовать shell_cmd
, и в этом случае вы предоставляете одну строку, представляющую полную командную строку, как если бы вы вводили ее в командной строке, что в целом проще.
Не вдаваясь в мельчайшие детали задействованных базовых механизмов, они обрабатываются и выполняются по-разному в среде исполнения Python, но при использовании shell_cmd
передает вашу командную строку непосредственно командному процессору для обработки.
AnПримером модифицированной сборки может быть следующий:
{
"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
, потому что в этом случае каждый аргумент является отдельной строкой.
Кроме того, здесь была немного очищена командная строка, потому что вы должныиметь возможность компилировать файл непосредственно в исполняемый файл без необходимости выполнять отдельную ссылкуep, если вы используете gcc / mingw (если вы предпочитаете, этот шаг достаточно легко добавить обратно).
Как определено здесь, в рабочем каталоге указан путь, по которому компилируется файл.хранится в, это означает, что входной файл, который ищет команда, должен находиться в этой папке, и именно там будет создан выходной файл.
Если вы откроете выходной файл, Sublime будет перезагружать его каждый раз, когда вы запускаете сборку (вам может или не может быть предложено, в зависимости от ваших предпочтений).