Итак, если вы используете версию Qt под компилятор Visaul Studio, то в консоле, где появляются сообщения об ошибках и предупреждениях, вместо русских букв будут появляться крякозабры. Будем это лечить.
Содержание
- Крякозябры
- Описание проблемы
- Программное обеспечение
- Выкачка исходных кодов jom
- Изменение jom
- Находим скомпилированный jom файл
- Замена jom файла
Крякозябры
Вот так выглядят крякозябры:
Описание проблемы
Данная проблема возникает, если использовать русскую версию Visual Studio, ввиду разных кодировок в консолях. В Qt нам нужна кодировка cp1251. К сожалению, если установить Visual Studio 2015 Community (про другие версии не знаю – не проверял) на русскую Windows с английским языком, то Visaul Studio перестает нормально работать внутри себя с C++ проектами. В общем, приходится ставит язык равный системному языку Windows. Но при этом тогда крякозябры появляются в Qt.
Предлагается много разных решений, но у меня не заработали почему-то (с реестром, батниками и др.). Константин Штепа предлагает такое решение:
Есть решение проблемы.
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
Глупо, но работает. И никаких батников не надо(который к тому же мне не помог =( )
Но я глупый, не люблю работать с консолью и так далее. В общем «моя не понимать» как всё это сделать. Вот только сейчас решил всё-таки покопаться и разобрался. Ниже представлена подробная инструкция, а как же реализовать этот алгоритм.
Программное обеспечение
Всё описанное ниже проводилось на Windows 10. Были установлены Visual Studio 2015 Community, Qt 5.8.0 под Visual Studio.
Также потребуется git клиент для выкачки исходных кодов jom. Я использую GitHub Desktop. Если у вас его нет, то скачивайте, устанавливайте, заходите под учеткой GitHub.
Выкачка исходных кодов jom
Тут я буду объяснять как выполнить команду:
1 |
git clone https://git.gitorious.org/qt-labs/jom.git |
Update 13.02.2017. Теперь по данному адресу не получить репозиторий. Нужно выполнить команду:
1 |
git clone https://github.com/qt-labs/jom |
Если вы знаете как её выполнить, то переходите к следующему разделу.
Вся проблема, кроется в том, что специальная утилита jom (если я правильно понимаю, то она нужна для распараллеливания компиляции проекта), неправильно задает кодировку. Мы в ней исправим это и перекомпилируем утилиту самим же Qt.
В любом git клиенте самым главным инструментом является не GUI оболочка (хотя лично я больше её люблю), а консоль.
Запустим консоль. В GitHub Desktop – это GitHub Shell. Разумеется, что можно и без этого запустить git, но так проще.
Запустится такое синее окно:
Обратите внимание, что у меня «открывается» папка C:\Dropbox\GitHub, так как она настроена как основная папка по работе с git проектами. У вас будет другая папка.
Теперь тут прописываем команду:
1 |
git clone https://github.com/qt-labs/jom |
и нажимаем Enter. После этого начнется клонирование проекта в вашу папку.
И в итоге у меня в папке C:\Dropbox\GitHub появилась папка jom.
Изменение jom
Открываем Qt Creator. И там переходим к пункту открытия проекта:
И в склонированной папке jom находим файл jom.pro и открываем его.
В подпроекте app находим файл main.cpp:
Находим так функцию main.
И там в самом начале этой функции добавляем строчки:
1 2 |
SetConsoleCP(1251); SetConsoleOutputCP(1251); |
Сохраняем изменения Ctrl + S.
Компилировать будем в режиме Release:
И компилируем наш проект:
В процессе компиляции вы увидим несколько предупреждений. Это ничего страшного. Главное, чтобы ошибок не было.
Кстати, предупреждения будут с крякозябрами)
Через некоторое время серый треугольник запуска проекта опять станет зеленым. Значит, проект скомпилировался.
Находим скомпилированный jom файл
Закройте Qt.
Перейдите в папку, где у вас находятся скомпилированные файлы Qt.
По умолчанию, если у вас проект, например, называется HarrixTesting, то в папке HarrixTesting, где находится папка, появится папка наподобие такой: build-HarrixTesting-Desktop_Qt_5_5_0_MinGW_32bit-Release (это под MinGW компилятор пример).
В общем, у меня в этой папке
интересует папка bin
Там должен быть файл jom.exe:
Замена jom файла
Переходим в папку, где находится файл qtcreator.exe. У меня это папка C:\Qt\Qt5.8.0\Tools\QtCreator\bin.
Переименуйте его, чтобы на всякий случай не потерять, если что пойдет не так.
И вставьте сюда скомпилированный jom.exe файл.
Всё. Теперь можете запускать Qt и проверять крякозябры. У меня они ушли.
P.S. Меня смущает сильно уменьшенный размер jom.exe, но никаких проблем я не обнаружил.