У меня .mqh
исходный файл кода с синтаксической ошибки, например, созданный с помощью следующей команды:Компилятор выдает ошибки под Wine, но не на Windows,
echo some_error > fail.mqh
Теперь я использую MetaEditor компилятор проверьте синтаксис, и моя цель - напечатать ошибки до стандартного вывода (CON
), вместо того, чтобы записывать их в файл (/log:file.log
). См .: Compiling.
следующий синтаксис штрафа на Linux/MacOS работает следующим образом (в том числе под wine cmd.exe
):
$ wine metaeditor.exe /s /log:CON /compile:fail.mqh
??fail.mqh : information: Checking 'fail.mqh'
fail.mqh(1,1) : error 116: 'some_error' - declaration without type
fail.mqh(1,1) : error 161: 'some_error' - unexpected end of program
: information: Result 2 error(s), 0 warning(s)
Пожалуйста, обратите внимание, что параметр /log
требуется, в противном случае компилятор ничего по умолчанию не печатает. Поэтому, если указан /log
, то по умолчанию он записывает результат компиляции в файл. И я использую специальное устройство CON
для отображения ошибок.
Проблема заключается в том, когда я бегу ту же команду на Windows (ЦМД), то у меня нет никакого вывода:
> metaeditor.exe /s /log:CON /compile:fail.mqh
То же самое для CON:
/con:
, а также. Также на PowerShell.
Хотя CON
работает для echo
, например .: echo test > CON
.
Я мог предположить, что это может быть ошибкой компилятора, но тогда он отлично работает под Wine. Почему это работает только под Wine?
Есть ли другой способ вывода ошибок на экран терминала в Windows вместо файла журнала?
Примечание: Вы можете install compiler from the site или загрузить бинарный файл (32bit или 64bit), чтобы проверить выше.
Разъяснение: Мой главный блокатор для использования двух отдельных команд (компилировать и распечатать журнал ошибок после этого), что CI test может потерпеть неудачу, прежде чем ошибки будут напечатаны, что делает тесты бесполезны, и это история для другого вопроса , Поэтому моя цель - проверить синтаксис и распечатать ошибки за один раз.
Я бы опустил аргумент '/ log: CON' и, в конце концов, добавил перенаправление вывода ошибки' 2> & 1 ' – LotPings
Однако по умолчанию компилятор ничего не выводит на вывод, если не указан параметр '/ log', поэтому он записывает результат компиляции в файл по умолчанию. – kenorb
Похоже, что metaeditor ведет себя/взаимодействует по-разному в этих средах. Как насчет try '/ log: con:' – LotPings