Сборка Qt Creator для Windows из исходников
Настоящая статья призвана оказать помощь в сборке Qt Creator
из исходников. Одним из побудительных мотивов произвести сборку
Qt Creator из исходников, помимо получения удовольствия от
самого процесса, является стремление исправить проблему с дизайнером
форм, интегрированным в Qt Creator, он станет понимать
плагины библиотек Qwt и QwtPolar, и на панели инструментов дизайнера
появятся группы виджетов, относящихся к этим библиотекам.
Начнем с того, что со связкой инструментов Qt 5 и MinGW 4.7
(см. здесь) производить сборку Qt Creator
не рекомендуется. Еще на этапе qmake можно
наблюдать следующее сообщение
Project MESSAGE: This project is using private headers and will
therefore be tied to this specific Qt module build version.
Project MESSAGE: Running this project against other version of the
Qt modules may crash at any arbitrary point.
Project MESSAGE: This is not a bug, but a result of using Qt internals. You have been warned!
Оно появляется при разборе модулей
src/plugins/coreplugin
src/plugins/qmldesigner
src/tools/qmlpuppet/qmlpuppet
Вероятнее всего именно по этой причине после успешного
окончания сборки запуск Qt Creator сопровождается несколько
раз выскакивающим сообщением об ошибке
Нечто подобное наблюдается при запуске Qt Creator,
устанавливаемого вместе с библиотекой Qt 5, но там эту проблему
удается решить (подробности в статье),
а здесь не получается. Других "косяков" в работе Qt Creator,
собранного вышеуказанной связкой инструментов, обнаружить не удалось,
даже виджеты Qwt в дизайнере форм появились.
В связи с изложенным выше далее рассматривается сборка Qt Creator
из исходников только со связкой инструментов Qt 4 и MinGW 4.6,
инструкции по их установке доступны здесь
и здесь. Подразумевается также,
что отладчик GDB уже собран и размещен в папке C:\Qt\qtcreator-gdb-7.4.1
(подробности в статье).
При сборке Qt Creator, начиная с версии 2.5.0, появился нюанс,
на который следует обращать внимание. Количество параметров в строке
вызова компилятора g++ увеличилось, поэтому
сборка может завершиться ошибкой, связанной со слишком большой длиной
командной строки. Чтобы предотвратить это, следует присваивать короткие
имена папке, в которой расположены исходники проекта, а также папке,
в которой осуществляется сборка. Рекомендуется также избегать большой
вложенности расположения этих папок. Рассмотрим подробно порядок
действий.
Сборка
1. Скачиваем на сайте
разработчика архив с исходниками Qt Creator
qt-creator-2.6.2-src.zip 26 MB
(версия, доступная на момент написания статьи)
2. Распаковываем архив в корень диска D:\.
Переименовываем папку с исходником D:\qt-creator-2.6.1-src
в D:\s, например.
3. Проект будем собирать в папке C:\Qt\q.
Перед началом сборки создаем эту папку.
4. Запускаем Qt 4.8.4 Command Prompt
(см. группу ярлыков библиотеки Qt в меню Пуск) и выполняем команды
cd /D C:\Qt\q
qmake D:\s\qtcreator.pro -r -spec win32-g++
5. После выполнения qmake
размер папки увеличивается до 90 MB, и вней появляется Makefile.
Далее выполняем непосредственно команду сборки
mingw32-make
Сборка выполнится быстрей, если применяется распараллеливание
компиляции (см. соответствующую статью).
Очистка
По окончании сборки размер папки C:\Qt\q
превышает полтора гигабайта, проект требует очистки. Можно было
бы выполнить специально для этого предназначенную команду очистки
mingw32-make clean, но она уберет из
проекта и те вещи, которые убирать вовсе не следует, после нее собранный
проект даже не запустится. Поэтому предлагается выполнить очистку
проекта вручную, делаем следущее:
1. Удаляем папку C:\Qt\q\src.
Ого! Папка C:\Qt\q уменьшилась
до 70 MB! Можно было бы этим ограничиться, но можно убрать
еще немного.
2. Удаляем папки
C:\Qt\q\lib\qtcreator\qtcomponents\debug
C:\Qt\q\lib\qtcreator\qtcomponents\release
C:\Qt\q\share\qtcreator\debug
C:\Qt\q\share\qtcreator\release
C:\Qt\q\share\qtcreator\translations\debug
C:\Qt\q\share\qtcreator\translations\release
и файлы
C:\Qt\q\Makefile
C:\Qt\q\lib\qtcreator\qtcomponents\Makefile
C:\Qt\q\lib\qtcreator\qtcomponents\Makefile.Debug
C:\Qt\q\lib\qtcreator\qtcomponents\Makefile.Release
C:\Qt\q\share\Makefile
C:\Qt\q\share\qtcreator\Makefile.static
C:\Qt\q\share\qtcreator\Makefile.static.Debug
C:\Qt\q\share\qtcreator\Makefile.static.Release
C:\Qt\q\share\qtcreator\translations\Makefile
C:\Qt\q\share\qtcreator\translations\Makefile.Debug
C:\Qt\q\share\qtcreator\translations\Makefile.Release
Все, больше пока лучше ничего не трогать. Обратите
внимание, что в папке C:\Qt\q\share\qtcreator\translations
остались только qm-файлы, необходимые для перевода Qt Creator.
Прежде чем продвигаться дальше, переименуем папку
назначения C:\Qt\q, в которой производилась
сборка, во что-нибудь более вразумительное, например, C:\Qt\qt-creator-2.6.2.
Автономность
Полученный нами Qt Creator зависит от библиотеки Qt 4,
которая была задействована в процессе сборки, и использовавшегося
при этом компилятора. Если пути к ним не прописаны в переменной
Path, то Qt Creator даже не запустится.
Хотелось бы иметь возможность использовать его независимо от того,
какую именно связку инструментов мы применяем для работы над своими
проектами. Для достижения этой цели необходимо поместить в папку
C:\Qt\qt-creator-2.6.2\bin
все библиотеки, от которых существует прямая или
косвенная зависимость файлов Qt Creator. У меня получился следующий
список
из папки компилятора C:\Qt\mingw-4.6\bin
libgcc_s_dw2-1.dll, libstdc++-6.dll, mingwm10.dll
из папки библиотеки Qt C:\Qt\qt-4.8.4\bin
phonon4.dll, Qt3Support4.dll, QtCLucene4.dll, QtCore4.dll,
QtDeclarative4.dll, QtDesigner4.dll, QtDesignerComponents4.dll,
QtGui4.dll, QtHelp4.dll, QtMultimedia4.dll, QtNetwork4.dll, QtOpenGL4.dll,
QtScript4.dll, QtSql4.dll, QtSvg4.dll, QtTest4.dll, QtWebKit4.dll,
QtXml4.dll, QtXmlPatterns4.dll
Теперь Qt Creator запустится и будет работать
независимо от того, какие именно пути прописаны в переменной Path.
Для достижения большего эффекта стоит скопировать все qm-файлы (или,
по крайней мере, qm-файлы русского языка) из папки C:\Qt\qt-4.8.4\translations
в папку C:\Qt\qt-creator-2.6.2\share\qtcreator\translations.
Настройка
1. Запускаем Qt Creator, выбираем пункт
главного меню Инструменты > Параметры...
В открывшемся окне на вкладке Сборка и запуск >
Основное указываем каталог проектов, например, C:\Qt\qt-proj
(этот каталог надо заблаговременно создать).
2. На вкладке Текстовый редактор > Поведение
назначаем Кодировкам файлов > По умолчанию
значение windows-1251 / CP1251.
3. Далее выбираем вкладку Сборка
и запуск > Компиляторы, убеждаемся, что имеется нужный
Вам компилятор, например, MinGW (x86 32bit),
все зависит от пути, прописанного в переменную Path.
Если требуемый компилятор не определился, то добавляем его с помощью
кнопки Добавить > MinGW.
4. На вкладке Сборка и запуск
> Профили Qt убеждаемся, что имеется профиль Qt 4.8.4 в PATH (qt-4.8.4)
и для него определен помощник Дампер QML
(или другой профиль в зависимости от значения системной переменной
QTDIR и пути, прописанного в переменную
Path). Нужный профиль Qt можно добавить,
воспользовавшись кнопкой с соответствующим названием.
5. На вкладке Сборка и запуск > Наборы
имеется связка инструментов Desktop (по умолчанию).
Для нее выбран правильный компилятор MinGW (x86 32bit),
но указан неработающий отладчик GDB C:\Qt\mingw-4.6\bin\gdb.exe.
Надо исправить ситуацию, нажав Управление... > Изменить...
и указав собранный выше отладчик C:\Qt\qtcreator-gdb-7.4.1\gdb-i686-pc-mingw32.exe.
Закрываем окно Параметры, нажав кнопку OK.
Опять же, имеется возможность создать требуемую связку инструментов
с помощью кнопки Добавить.
Плагины
В начале статьи отмечалось, что в дизайнере форм собранного Qt Creator
должны отображаться виджеты библиотек Qwt и QwtPolar. Именно это,
по видимому, и является основной причиной, побуждающей собирать
его из иходников. Так вот, виджеты появляются, но этому, пожалуй,
следует посвятить отдельную статью.
На этом все этапы сборки, очистки, настройки завершены,
можно пользоваться собранным Qt Creator.
Это новая редакция статьи, старая редакция доступна
по ссылке.
|