ѢѢ или трудности перевода. Обучаем QtCreator великому и могучему

Safoyeth 13 Ноя 2015

Однажды тёмной-тёмной ночью, один обычный человек в n+1 раз устанавливал Qt. Всё было хорошо, но хорошо было недолго, ибо случилось страшное и тестовый проект не собрался, и написал ему QtCreator страшные слова:

C:\Qt\5.5\Projects\bcpl\main.cpp:10: ошибка: C2065: bug: ­Ґ®Ўкпў«Ґ­­л© Ё¤Ґ­вЁдЁЄ в®а

Данный эпос для тех, у кого это...  А это возникает у тех, кто вместо MinGW использует MSVC. Иными словами, если вы сначала поставили Visual Studio (причём русскую студию), а затем Qt, то оно скорее всего будет... В сети довольно много рецептов и советов по лечению проблемы, начиная от радикальных выкриков типа

нужно снести Qt, снести VS, а потом всё переустановить в обратном порядке

до страшных батников типа

@echo off reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun /t reg_expand_sz /d "chcp 1251 1>nul" /f C:\Qt\qtcreator-{version}\bin\qtcreator.exe reg delete "HKCU\Software\Microsoft\Command Processor" /v AutoRun /f

Также есть предложения не использовать компилятор VS (Докачать, если сразу не скачали, и подружить MinGW с Qt предлагается в виде очередного квеста с гуглением и курением мануалов). Здесь предлагают использовать другой батник или пересобрать jom из исходников. Вариантов масса, но мы пойдём самым быстрым путём.

Здесь описана сама суть бага (разница в кодировках) и здесь же есть файлик jom.zip. Скачиваем его, распаковываем в папку, где лежит QtCreator (у меня это C:\Qt\Tools\QtCreator\bin), соглашаемся с заменой. Далее в самом QtCreator идём в Параметры -> Инструменты и проверяем, чтобы стояла галочка "Использовать jom вместо nmake"

qtcreatorsettings

Используем jom

Иногда может потребоваться перезапуск QtCreator, иногда к экзешнику нужно будет добавить файл QtCore4.dll.

Решение работает на Windows 7, 8 и 8.1, а вот у пользователей Windows 10 жизнь будет сложнее...

... или только мне так повезло... Но если вы со мной в одной лодке (Специально насилую мозг Windows 10 + VS 2015), то продолжим! Итак, для начала идём сюда. Качаем рабочий бинарник и заново меняем его в папке bin (или убираем галку и будем использовать nmake). Далее качаем исходный код Jom'а:

Открываем jom.pro QtCreator'ом, нажимаем Ctrl+r и молимся, чтобы всё собралось. Если вам повезло и открылась командная строка с текстом типа "бла-бла-бла, не найден Makefile", то переходите сразу ниже, туда, где будет код, наслаждения вы не получите 😛

Если же собрать jom не получится, то а) моё решение проблемы (не оптимальное, зато моё!), б) в конце статьи я дам ссылку на работающий jom.exe.

А) У меня проблема возникла в строке #include <Tlhelp32.h> - никак QtCreator не хотел видеть его. Моё решение не блещет изяществом, скорее это всё равно, что стрелять из пушки по воробьям, но я сделал так (тем более, что мне повезло и не пришлось ничего ставить дополнительно). Открываем Visual Studio и если нет, то ставим Windows 8 SDK  и QtPackage. Перезагружаем VS и открываем файл jom.pro в VS. После мучительного раздумья проект загрузится. В обозревателе решений появятся три проекта - jom, jomlib и tests. Для начала в режиме Debug нужно последовательно собрать сначала jomlib, затем jom (двойной клик по проекту, затем клик правой кнопкой мыша, "Собрать").  Если всё ОК (у меня было так, если у вас что-то другое, то нужно разбираться в чём именно проблема...), то переключайте на Release, собирайте jomlib, затем в проекте jom открывайте файл main.cpp, находите функцию main (последняя) и перед самой первой строчкой  int result = 0 пишете:

Собираете проект jom, переходите в папку, где он лежит, копируете jom.exe сами знаете куда, запускаете QtCreator и наслаждаетесь языком Пушкина и Есенина...

Метод не оптимален. Повторюсь, у меня в VS уже стояло всё, что нужно, поэтому я поступил так. Если же вам лень или что-то не получилось, то вот здесь лежит скомпилированный jom. Специально пересобрал и ещё раз оттестировал. Просто добавьте его в папку c QtCreator!

Всем мира и послушного Qt!

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.




Добавить комментарий

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: