Небезмолвная компиляция

Post Reply
boykobb
Posts: 13
Joined: 15.08.2019 16:57

Небезмолвная компиляция

Post by boykobb »

Компилировать (или компилировать и связывать) программу с помощью инструмента так, как указано в Wiki, имеет одно досадное свойство: когда оно проходит без ошибок, в Output panel ничего не выдается. Поэтому фактически трудно отличить успешное окончание компиляции от ее незавершения.
Это можно исправить, добавив команду с подходящим сообщением, которая выполняется только в случае завершения компиляции без ошибок. Для Windows решение примерно такое:

Code: Select all

File name:     g++.exe
Shell command: checked
Parameters:    -Wall -o {FileNameNoExt}.exe {FileName} && echo Compilation successful.
Для POSIX-систем решение не совсем то же. Запускать компилятор «сам по себе» и после него выполнить echo невозможно. Вместо того, запускаем sh, а всё остальное идет в качестве передаваемой sh комманды:

Code: Select all

File name:     sh
Shell command: unchecked
Parameters:    -c "g++ -Wall -o {FileNameNoExt} {FileNameOnly} && echo 'Compilation successful.'"
Это работает, я для себя именнно такие инструменты сделал.
Однако мне кажется, что, скорее всего, не пользователю следует изобретать подобные решения, а нужное поведение должно обеспечиваться самим редактором (через plugin). Тем более, что имеется явная асимметрия между решениями для Windows и POSIX. Даже Shell command в одном случае true, а в другом false. Почему должно быть так?
Справедливости ради нужно сказать, что большее единообразие решений можно постичь, переделав решение для Windows в духе POSIX, вызывая command или cmd вместо sh. Однако получим не то же самое. В POSIX оболочка sh выполняется в данном случае без помощи терминала, тогда как оболочка command/cmd выполняется всегда в консоли. Поэтому черное окно консоли будет появляться и тут же исчезать без никакой в нем нужды, что, разумеется, причиняет пользователю дискомфорт. К тому же, решение все равно закодировано на ненужно низком уровне, и оно все равно не одинаково (как текст) для двух о.с.
В идеале, пользователю должно быть достаточно задавать только параметры запуска компилятора (что не имеет отношения к операционной системе), а перевод в вышеуказанные два варианта сделает за него редактор (или plugin). Таким образом, для компиляции пользователю будет достаточен только один, независящий от о.с., инструмент.
Post Reply