Работая в QtCreator при использовании компилятора от Visual Studio 2010, столкнулся с проблеммой кодировки окна "сообщения сборки". Вместо русских букв там были "кракозяблы". Причём сообщения от компилятора выводились в неправильной кодировке, а сообщения от утилиты сборки nmake выводились нормально.
Оказалось, что сообщения компилятора печатались в кодировке DOS (866) так, как будто мы запускали его из консоли.
Для исправления ситуации была написана маленькая утилита jom, которая решила проблему с кодировкой. Утилита jom является заменой оригинальной утилиты jom, которая якобы распределяла процесс компиляции на несколько ядер процессора. (К слову сказать, компилятор Visual Studio 2010 полностью использует ядра.) В этой утилите выбирается правильная кодовая страница консоли - Windows CP1251, и запускается утилита nmake
Версия x86: jom.exe x86
Версия x64: jom.exe x64
Иван 4.12.2016 9:34 | Спасибо, Андрей! Спас день! |
Harrix 31.7.2016 18:6 | Написал подробную статью как исправить jom файл http://blog.harrix.org/article/5888 |
StingX 17.4.2016 21:42 | Давно уже не запускал cset_fix. Сейчас проверил на Win10 x64 (vs2013 + Qt5.5.1 + QtCreator 3.6.0) - работает. С cset_fix есть только одна проблема (с самого начала была): после инжекта в процесс QtCreator перестает работать отладка. |
Иван 14.4.2016 13:7 | Спасибо большое, помогло. комплект MSVS_2013, Qt Creator 5.6 |
Harrix 10.4.2016 19:50 | На Visual Studio 2015 в Windows 10 и Qt 5.6.0 qt_creator_cset_fix не помогает. |
АлексАндр 29.3.2016 18:18 | спасибо, помогло) |
Иван 14.1.2016 15:56 | На данный момент ничего лучше qt_creator_cset_fix к сожалению нет. Зато работает с любыми версиями qtcreator-а. |
Александр 27.4.2015 8:30 | FresherTM способ помог, спасибо |
NoctuaArcticum 15.4.2015 13:14 | Не просветите в каких настройках проекта в QtCreator-е 3.3 заменить путь к Jom.exe на путь к нашему .bat-файлу? |
FresherTM 23.1.2015 20:39 | Есть способ без замены бинарника и с русскими комментариями: пишем .bat файл примерно следующего содержания: @echo off chcp 1251 > nul C:\path\to\jom.exe %* В QtCreator в настройках проекта заменяем путь к jom.exe на путь к нашему .bat файлу. |
Неизвестный 24.12.2013 14:33 | RTFM: https://bugreports.qt-project.org/browse/QTCREATORBUG-316?focusedCommentId=107079&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-107079 |
Рустем 19.8.2013 9:33 | Спасибо за совет. Qt5.1.0, компилятор MSVC2012 x64, Windows 7 x64. Всё заработало после замены jom.exe старого на jom.exe новый |
Михаил 6.8.2013 0:2 | Константин Штепа в комментариях предложил (http://codedchaos.blogspot.ru/2012/09/qt-creator-windows.html) рабочее решение ... 1) Скачиваете исходники jom c http://qt.gitorious.org/qt-labs/jom/ или с помощью git://gitorious.org/qt-labs/jom.git 2) Находите в них файл \src\app\main.cpp 3) Заменяете в нём строки 4) int main(int argc, char* argv[]) { int result = 0; на int main(int argc, char* argv[]) { SetConsoleCP(1251); SetConsoleOutputCP(1251); int result = 0; 5) Далее запускаете командную строку разработчика vs2012(или аналогичное), переходите в корневую папку jom и выполняете команды qmake и nmake. Далее просто копируете файлы из папки %jom%\bin\ в папку %qt-creator%\bin |
Алекс 31.7.2013 23:48 | Qt Creator 5.1.0 +VS2012 После замены jom.exe проект перестает компилироваться. Единственное ошибка которая появляется это "Не удалось запустить программу. Путь или права недопустимы?" |
Konstantin 21.6.2013 11:53 | Кракозябры можно вылечить без замены jom. Для этого нужно отредактировать файл %QTDIR%\mkspecs\common\shell-win32.conf в каждой строке после '=' добавляем 'chcp 1251>nul &&'. Должно получиться на подобии этого: QMAKE_COPY = chcp 1251>nul && copy /y Всё! Для существующих проектов запускаем qmake и любуемся русским описанием ошибок. |
Diffor 21.6.2013 6:34 | Только вот такая замена jom сильно тормозит сборку на многоядерниках. Основная фича jom, как раз в многопоточной сборке с автоматической подстройкой по количеству ядер, а тут один поток и всё :( |
cimex 11.6.2013 0:21 | Понял В новой версии это называется "Сборка и запуск". |
cimex 10.6.2013 23:14 | "Инструменты -> Параметры -> Проекты" Нет такого? Как быть? |
Lixo 1.5.2013 4:51 | Спасибо, все чётко работает. Но, что делать, если я вообще не хочу чтобы эти сообщения переводились на русский язык. По мне, так гораздо удобнее, когда все сообщения об ошибках на английском, их тогда проще обгугливать |
volooodya 1.5.2013 0:27 | спасибо, помогло и на VS2012 компиляторе |
Альберт 9.4.2013 9:25 | Благодарю! Я тоже подумал, что не работает, но потом просто убрал стандартный файл отсюда Tools\QtCreator\bin и после все пишет на русском. Ответ: Да, стандартный файл jom.exe необходимо заменить |
Александр 3.4.2013 20:33 | Огромное спасибо за .exe и подробную инструкцию! Все работает на ура! |
man 6.3.2013 16:44 | Спасибо разработчикам! Проблема решилась. Creator 2.4.1 + msvc 2008 W7 x86 |
VityOK 3.3.2013 18:50 | Огроменнейшое спасибо! А то, никак не разобрать, где сделал ошибку. |
Сергей 26.2.2013 16:5 | спасибо большое... помогло...;) |
Dorian 15.2.2013 19:10 | СПАСИБО! |
elisevgeniy 10.2.2013 19:27 | Спасибо, win7x32, vs2010, qt 5.0.0 (qt creater 2.6.1) всё работает :) |
Lion 27.1.2013 20:40 | Помогает, но не использует многопоточную сборку, из-за чего по скорости равен nmake. Ответ: да |
Аноним 23.1.2013 2:19 | Пацаны, не запускайте! Брата стёрло в кашу, пишу с микроволновки. |
Laurent 6.1.2013 20:25 | Браво! Работает. Спасибо! |
Неизвестный 16.11.2012 17:24 | обсуждение: https://codereview.qt-project.org/#change,30405 решение: http://stingx.ru/public/qt_creator_cset_fix.rar |
Неизвестный 16.11.2012 17:23 | Проголосовал. Есть ссылка в которой идет обсуждение патча и там же ссылка на работающее решение. У меня на win7-64 + mcvs-2010 + 2.6.0 работает |
Иван 16.11.2012 11:52 | Давайте голосуем все за исправление бага в Qt Creator-e! https://bugreports.qt-project.org/browse/QTCREATORBUG-316 |
Евгений 8.10.2012 9:19 | Не помогло =( Creator 2.4.1 MSVC 2008 |
Alexander 18.9.2012 22:59 | Сразу после замены JOM иероглифы превратились в читаемый текст. Полезная утилитка. |
frost 5.9.2012 1:26 | пишет: missing separator. Stop Makefile.Debug и не компилируется |
SanSuSan 29.8.2012 2:47 | а можно особо и не мучаться, а поставить английскую версию VS и текст ошибок будет на английском, как и оно и должно быть ) |
Иван 27.8.2012 12:37 | Спасибо! Вот только есть баг. Ваша версия не поддерживает параметр -j |
grin 21.8.2012 1:15 | Спасибо =) выручил |
Angry Alex 14.8.2012 18:26 | Вот гады! Нет бы сразу правильно все сделать :-( |
Alex 2.4.2012 11:8 | to sanaforever: Юзаю и вроде все нормально. Если чего не будет компилиться, можете вернуться к старой версии с кракозяблами и проверить, что все также не работает. :) |
sanaforewer 23.3.2012 21:4 | помогло! но! логичен вопрос- с офф сайта качаю последнюю версию- там 500-600кб (и не работает), а тут 7,5кб)))))) какова вероятность возникновения в дальнейшем проблем со сборкой?? сами то ей пользуетесь? Просто я новичек в Qt и ни в жизнь не догадаюсь если че не откомпилируется, что ошибка в использовании этой утилиты |
Неизвестный 23.3.2012 1:41 | Спасибо огромное! Наконец смогу рабочую прогу написать. |
Alex 16.3.2012 16:40 | Спасибо, помогло. |