Компиляция qt из исходников компилятором из состава CodeBlocks. Сборка Qt из исходников компилятором MinGW

12.05.2019

Настройка Qt Creator

На вкладке Сборка и запуск > Основное указываем каталог проектов, например, /home/login/Qt/qt-proj (этот каталог надо заблаговременно создать). На вкладке Текстовый редактор > Поведение назначаем Кодировкам файлов > По умолчанию значение UTF-8 .

Настройка инструментов

Qt 5 .

Выбираем вкладку Сборка и запуск > Компиляторы

Имя: Система GDB в /usr/bin/gdb
Путь: /usr/bin/gdb
Тип: GDB
ABI: x86-linux-generic-elf-unknown
Версия: 7.7.1

/home/login/Qt/Qt5/5.5/gcc/bin/qmake . В названии профиля прописываем, например, Qt 5.5.1 GCC 32bit .

На вкладке Сборка и запуск > Основное указываем каталог проектов, например, C:\Qt\qt-proj (этот каталог надо заблаговременно создать). На вкладке Текстовый редактор > Поведение назначаем Кодировкам файлов > По умолчанию значение windows-1251 / CP1251 .

Настройка инструментов

Предполагается, что у Вас уже установлена библиотека Qt 5 с MinGW и собран отладчик GDB .

Выбираем вкладку Сборка и запуск > Компиляторы , нажимаем кнопку Добавить > MinGW и указываем путь к компилятору C:\Qt\Qt5.5.1\Tools\mingw492_32\bin\g++.exe . В названии прописываем, например, MinGW 4.9.2 (x86 32bit) .

На вкладке Отладчики (здесь же) нажимаем кнопку Добавить и в свойствах нового отладчика указываем

Имя: GDB 7.10
Путь: C:\Qt\qtcreator-gdb-7.10\gdb-i686-pc-mingw32.exe

Далее выбираем вкладку Qt Versions , нажимаем кнопку Добавить ... и указываем путь к установленной заранее библиотеке Qt C:\Qt\Qt5.5.1\5.5\mingw492_32\bin\qmake.exe . В названии профиля прописываем, например, Qt 5.5.1 MinGW 4.9.2 .
Теперь можно создать связку инструментов. Выбираем вкладку Комплекты , нажимаем кнопку Добавить и в свойствах новой связки указываем

Qt 5 и MSVC 2010

Предполагается, что у Вас уже установлена библиотека Qt 5 с MSVC 2010 и инструментарий Windows SDK for Windows 7 .

Выбираем вкладку Сборка и запуск > Компиляторы и убеждаемся, что среди обнаруженных имеется компилятор, обладающий свойствами

На вкладке Отладчики (здесь же) убеждаемся, что среди обнаруженных имеется отладчик, в свойствах которого прописано

Далее выбираем вкладку Qt Versions , нажимаем кнопку Добавить ... и указываем путь к установленной заранее библиотеке Qt D:\Qt\Qt5.5.1-vs\5.5\msvc2010\bin\qmake.exe . В названии профиля прописываем, например, Qt 5.5.1 MSVC 2010 .
Теперь можно создать связку инструментов. Выбираем вкладку Комплекты , нажимаем кнопку Добавить и в свойствах новой связки указываем

Закрываем окно Параметры , нажав кнопку OK .

В данной статье я описываю свой опыт компиляции библиотеки Qt версии 4.8.5 из исходников с помощью компилятора MinGW, идущего в составе среды программирования CodeBlocks версии 10.05 на машине с операционной системой Windows XP.

Так как для движка нужен нормальный редактор карт и объектов, то я задумался о выборе GUI библиотеки. Вполне логично, что ввиду повсеместного расхваливания qt, я не мог не попробовать ее в деле. Скачал книжки, инсталлировал версию "qt-win-opensource-4.8.4-mingw". У меня CodeBlocks версии 10.05. Создал в CodeBlock класс главного окна и модуль с main - короче, простейшее приложение с главным окном. Надо сказать, что меня ждало разочарование - компиляция и сборка qt-приложений представляет собой не банальное нажатие пункта "Build", а ряд предварительных настроек и действий, да и вообще производится в командной строке. После пары дней геморроя я скомпилировал этот небольшой проект с главным окном. Но для этого мне пришлось собрать qt из исходников. Дело в том, что ошибки никак не хотели устраняться и я где-то прочитал, что якобы версия mingw на компьютере разработчика может конфликтовать с установленным qt из-за того, что установленный qt был собран на другой версии mingw. Что ж, решил собрать.
Скачал исходники "qt-everywhere-opensource-src-4.8.5.zip". Хотя сейчас уже есть пятая версия, я решил взять предпоследнюю на тот момент. На диске "E" (это тот, что обычно D у большинства) создал папку "Qt". Положил архив туда. Распаковал его.
Делал я все на Windows XP. Так как компилятор MinGW идет в составе среды программирования CodeBlocks, я использовал его, то есть я не устанавливал его отдельно.

Установил переменные среды:
Мой компьютер-> Свойства:

Дополнительно:

Переменные среды:

Сначала добавляете путь к папке bin компилятора MinGW (у меня E:\Program Files\CodeBlocks\MinGW\bin)
Нужно выделить переменную "Path", нажать кнопку "Изменить":

Внимание! Нужно не заменять то, что там уже есть, а именно добавить , иначе что-то на вашем компе может перестать нормально работать. Появится окошко.
Пойти в конец строки поля ввода с именем "Значение переменной". Если там не стоит в конце ";" (без кавычек), то поставьте точку с запятой и вставьте путь к папке "bin" у MinGW.
У меня вот так (я показал многоточием то, что у меня уже есть путь к другим папкам)...;E:\Program Files\CodeBlocks\MinGW\bin;
То есть пути в "Path" разделяются точками с запятой. Жмете ок.
Создаете следующие переменные:

Имя переменной: MinGWDIR Значение переменной: путь к папке MinGW (у меня E:\Program Files\CodeBlocks\MinGW)
Имя переменной: QMAKESPEC Значение переменной: win32-g++
Имя переменной: QTDIR Значение переменной: путь к распакованным исходникам qt (у меня E:\Qt\qt-everywhere-opensource-src-4.8.5)

QMAKESPEC должен содержать имя профиля сборки. Для выбранного компилятора MinGW, у Qt есть два профиля: "win32-g++" - для версий компилятора GCC ниже 4.6, и "win32-g++-4.6" - для версий компилятора GCC 4.6 (он задействован в последних версиях MinGW).

Конфигурация библиотеки Qt. Запускаем командную строку и переходим в ней в папку с исходниками Qt (у меня E:\Qt\qt-everywhere-opensource-src-4.8.5). Нужно запустить конфигуратор с опциями. Я использую LGPL - версию, поэтому выбрал опцию -opensource. Так же мне не нужны демо и примеры -nomake demos -nomake examples. Мне нужны версии debug и release. Вообщем, я набил (лучше вручную, а то при вставке может запуститья не со всеми опциями, а только с теми, которые поместились в первой строке) следующее:

configure.exe -debug-and-release -qt-libpng -qt-libjpeg -opensource
-no-qt3support -qt-zlib -qt-libmng -qt-libtiff
-nomake demos -nomake examples


Конфигуратор спросит вас, дав 4 варианта. Нужно согласиться использовать LGPL (я к сожалению не помню их названия, но там понятно).
После этого конфигуратор создаст ключевой файл qmake.exe и makefile"ы модулей библиотеки Qt. После завершения этого процесса появится сообщение:

Qt is now configured for building. Just run mingw32-make.
To reconfigure, run mingw32-make confclean and configure.

Осталось запустить компиляцию. Для этого вбейте в командной строке следующее:

Компиляция qt идет очень долго. У меня этот процесс занял 10 часов. Я начал в 11.00. В комп в последний раз заглядывал в 18.20 - процесс еще шел. Утром мне пришлось перезагрузить комп, так как комп не реагировал на нажатия кнопок мыши и клавиш клавиатуры. Через поиск я нашел, что самый последний созданный файл библиотеки был создан в 21.02.
После я решил проверить собранную библиотеку Qt. Прописал в переменных среды путь к папке "bin" у Qt (у меня E:\Qt\qt-everywhere-opensource-src-4.8.5\bin). Это нужно для запуска qmake.
Итак, я проверяю созданный в CodeBlocks пример приложения Qt с главным окном.
В командной строке я перешел в папку проекта с главным окном. Набил

Qt создала файл проекта с расширением.pro. Далее набил просто без параметров. Qt создал makefile" ы проекта. Осталось скомпилировать проект - для этого я набил в командной строке
Все. В папке Debug я увидел долгожданный экзешник, над названием которого ввиду трепки нервов с Qt я не стал долго думать:

Показать

Для быстрой разработки кроссплатформенных приложений весьма просто ставится в Linux, но в Windows с ним приходится немножко повозиться.

С сайта Nokia можно скачать уже скомпилированную библиотеку, но в предлагаемом виде она удобна разве что поиграться долгими зимними ночами. Дело в том, что функции, хранящиеся в файле с раширением dll (динамически подключаемые библиотеки) могут присоединяться к конечной программе двумя способами. Первый способ называется динамическим (dynamic). При его использовании код функций остается в dll’ке, благодаря чему размер скомпилированной програмы достаточно мал. Но при переносе экзешника на другой компьютер понадобится тащить и dll, суммарный размер которых в случае с Qt как правило больше 100 МБ. Второй метод компиляции - статический (static). При его использовании надобность в отдельных библиотеках отпадает: код необходимых функций встраивается непосредственно в exe-файл. И надо ж было сделать, что предлагаемый инсталлятор Qt SDK поддерживает только динамическую линковку библиотек. Чтобы исправить ситуацию нужно перекомпилировать Qt, чем сейчас и займемся.

Загрузка компонент

По ссылке http://qt.nokia.com/downloads выбираем лицензию GPL и смотрим на колонку, озаглавленную Qt: Framework Only . Можно использовать компилятор Visual Studio, но более общим может показаться компиляция с помощью MinGW - аналога gcc под Windows, которая дальше и будет рассматриваться. О компиляции с помощью Visual Studio можно узнать по следующей ссылке: http://qt.nokia.com/doc/4.6/install-win.html . Итак, переходим по соответствующей ссылке и качаем файл, содержащий в названии слово «src». Полученный архив распаковываем в C:\Qt\, где - номер скачанной версии Qt, 4.6.0 в моем случае (далее этот путь будет обозначен как ). Иной каталог выбирать не стоит, так как говорят , что в иных каталогах компиляция обламывается.

Для дальнейшей комфортной работы также понадобится Qt Creator, доступный по вышеприведенной ссылке на сайт Нокии.

Так же грузим онлайн-инсталлятор MinGW отсюда: . Установим его, например, в C:\MinGW (далее этот путь будет обозначен как ). Отсюда же грузим отладчик gdb последней версии. Из архива tar.gz или tar.bz2 извлекаем каталог bin\ в .

Компиляция

Так как нам нужна статическая линковка, в файле QTDIR\mkspecs\win32-g++\qmake.conf находим строку, по виду подобную
QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
и дописываем после равно ключ -static:
QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc

Update 26/03/2013. Версия Qt 5.0.1 требует установленного в системе интерпретатора Perl и Python. Для этого был установлен Strawberry Perl и Python 2.7 , а батник, описываемый ниже, был модифицирован.

В каталоге QTDIR создадим батник с именем QtInstall.bat, устанавливающий необходимые переменные окружения со следующим содержимым:

SET QTDIR=c:\Qt\5.0.1\ SET MINGWDIR=c:\MinGW\ SET QMAKESPEC=win32-g++ SET PERLDIR=c:\strawberry\perl\ SET PYTHONDIR=c:\Python27\ SET PATH=%QTDIR%\bin;%MINGWDIR%\bin;%PERLDIR%\bin;%PYTHONDIR%;%SystemRoot%\System32

Запустим его. Конфигуратор компилятора запускается командой configure в открывшейся консоли. Полный список её параметров вызывается ключом -help:
configure -help
Я использовал следующие ключи:
configure -debug-and-release -static -no-exceptions -no-accessibility -qt-libtiff -qt-libmng -qt-libjpeg -qt-sql-sqlite

Update 26/03/2013. Для версии 5.0.1 использовалась команда configure -debug-and-release -static -no-accessibility -opensource -qt-libjpeg -qt-libpng -qt-sql-sqlite -nomake examples -opengl desktop
Добавление ключа -qt-sql-mysql привело к ошибке компиляции.
Конфигуратор предложит выбрать лицензию, согласиться с ней и пошебуршит минут 10-20.

Теперь можно начинать компиляцию командой
mingw32-make
Она потребует порядка 25 ГБ свободного места на диске и около 10 часов машинного времени на не очень сильных машинах. Большую часть указанных гигабайт занимают примеры, которые тоже будут компилироваться, при чем в двух вариантах: отладочный (будет лежать в каталоге debug\ внутри каталога с примером) и релизный (каталог release\ там же). Отладочные в среднем весят около 100 МБ и в примерах совершенно не нужны. Почистив от них каталоги \examples и \demos конечный размер уменьшится до 8,5 ГБ.

Как оказалось, скачав лишь , создать свою программу на Qt не удастся. Помимо этого файла, в первую очередь, нужен рабочий компилятор (для данной версии это MinGW не ниже 4.4), который придется устанавливать отдельно, и скачать уже готовый. Среда разработки () оказалась поставляется вне библиотек Qt 4.8.5 и тоже требует отдельной установки. Ну и напоследок, если собираетесь запускать свою программу в отладчике по шагам (а я уверен, что рано или поздно придется это делать), то необходим еще и свой отладчик (GDB имеющийся в MinGW не подходит)
А теперь обо всем по порядку.

Последовательность действий:

1. Установка компилятора C++ MinGW .
Можно воспользоваться способом установки через . Но для новичка он труден. Я предлагаю поступить проще - скачать уже готовый настроенный и проверенный пакет всего необходимого для компиляции проектов Qt на C++.
1.1. Скачиваем: mingw_4.4.0.zip .
1.2. Создаем папку Qt в корне системного раздела (диск C:) и переносим в нее папку MinGW

2. Установка библиотек Qt 4.8.5
2.1. Скачиваем их: .
2.2. Запускаем скачанный exe-файл.
2.3. В процессе установки указываем:
путь куда установить: C:\Qt\4.8.5
путь до MinGW: C:\Qt\MinGW
остальное по умолчанию

3. Установка среды разработки Qt Creator 3
3.1. Скачиваем её: .
3.2. Запускаем скачанный exe-файл.
3.3. В процессе установки указываем:
путь куда установить: C:\Qt\Creator3
остальное по умолчанию

4. Установка отладчика GDB 7.7 для Qt
Почему-то Qt не нравится тот gdb, который имеется в пакете MinGW. Qt хочет свой отладчик, по своему настроенный. И его вы можете собрать используя эту статью. Я собирал именно по этой статье (разве что пришлось заменить файл из исходников - \src\dist\gdb\Makefile.mingw, на последний Makefile.mingw с сайта https://qt.gitorious.org/qt). Но я предлагаю использовать уже собранный мной GDB.
4.1. Скачиваем его: Qt_GDB7.7.zip (13 MB).
4.2. Переносим в С:\Qt папку Qt_GDB7.7 и всё ее содержимое из скачанного архива.

5. Настройка Qt
4.1. Запускаем Qt Creator
4.2. Открываем окно Параметров во вкладке Инструменты .
4.3. Выбираем в правом меню строку Сборка и запуск .
4.4. Начнем с конца. Переходим на вкладку Отладчики .
4.5. Нажимаем кнопку Добавить , даем название GDB и указываем путь:
C:\Qt\Qt_GDB7.7\gdb-i686-pc-mingw32.exe
4.6. Применить


4.7. Вкладка Компиляторы -> кнопка Добавить -> MinGW .
4.8. Указываем путь к компилятору:
C:\Qt\MinGW\bin\gcc.exe
4.9. Остальное не трогаем. Применить .


4.10. Вкладка Профили Qt -> кнопка Добавить .
4.11. Указываем путь до qmake:
C:\Qt\4.8.5\bin\qmake.exe
4.12. Изменим название на Qt 4.8.5
4.13. Остальное не трогаем. Применить .


4.14. Вкладка Комплекты . Удаляем комплект Desktop (по умолчанию) , если имеется.


4.15. Нажимаем кнопку Добавить . Присваиваем имя: Qt 4.8.5 (MinGW) .
4.16. В строках Компилятор , Отладчик и Профиль Qt указываем только что созданные параметры.
4.17. Остальное не трогаем. Применить .


4.18. ОК

Всё, теперь можно начать создавать программы использую библиотеку Qt и среду разработки Qt Creator .

Для начала можете запустить этот тестовый проект "Hello, World" (взят из книги М.Шлее)
Кстати, Qt не поддерживает русских символов в пути до проектов. А все проекты советую хранить в созданной специально для этого папке C:\Qt\Projects . Для запуска этого проекта просто распакуйте его (папку Hello и два имеющихся в ней файла) и запустите проектный файл Hello.pro с помощью Qt Creator . Среда разработки предложит настроить его. С её предложением мы согласимся, оставим как есть, и нажмем кнопку Настроить проект .

Приступим...


1. Первое, что необходимо сделать это, конечно же, скачать и установить компилятор MinGW. Для этого стоит посетить официальный сайт и скачать online . Запустив его, в принципе, никаких сложностей с установкой быть не должно. На что необходимо только обратить внимание "новичков в этом деле": 1) установщик предлагает пользователю (да-да, Вам:-)) выбрать каким репозиторием пользоваться - актуальным на момент создания инсталлятора ("use pre-packaged repository catalogues "), или самым последним ("download latest repository catalogues ") - тут выбирайте сами (я выбираю всегда самую последнюю версию); 2) в момент выбора пакетов для установки - не забудьте отметить пакет C++ , а так же дополнительные пакеты MSYS Basic System и MinGW Developer ToolKit (никогда не знаешь, что может понадобиться в следующий момент;-)).

И помните: НИКАКИХ ПРОБЕЛОВ В ПУТЯХ !

Если же сомневаетесь в правильности своих действий, Вы всегда можете посетить очень информативную страничку из ВиКи MinGW посвященную вопросу установки - .

После установки MinGW, не забудьте добавить в переменную среды PATH полный путь до папки "bin " (так, если MinGW установлен в папку C:\MinGW , то в переменную PATH необходимо добавить путь C:\MinGW\bin ). Только будьте предельно осторожны - не заменить содержимое, а именно добавить ! Если затрудняетесь с поиском этой самой переменной PATH ;-), обратитесь к шагу 3 - это подтолкнет Вас в нужном направлении.

2. Со страницы загрузки Qt скачать архив с исходными текстами и разархивировать его в любую понравившуюся директорию (не забывайте, что тут путь так же не должен содержать пробелов). В моем случае это была директория Qt на диске "C" (C:\Qt\ ).

Окно "Переменные среды"
3. Задать переменные среды QMAKESPEC и QTDIR . Сделать это можно двумя способами:
=== 1) (рекомендую ) в соответствующем окне "Переменные среды "
(кто не знает где его искать:
Пользователи Windows XP - ПКМ на иконке "Мой компьютер" меню "Свойства", в появившемся окне выбираем вкладку "Дополнительно" и ищем там кнопку "Переменные среды...";
Пользователи Windows 7 - ПКМ на иконке "Мой компьютер" меню "Свойства", в появившемся окне выбираем слева меню "Дополнительные параметры системы" и далее, аналогично, вкладка "Дополнительно" и кнопка "Переменные среды...").
=== 2) непосредственно перед выполнением команд описанных на шаге 4, задать в командной строке путем ввода команд:
SET QMAKESPEC=значение SET QTDIR=значение Учтите, что данный способ задаст переменные среды на время существования консоли и при повторной сборке/реконфигурации библиотеки Qt, Вам придется вводить их заново.

Осталось только определится какие же значения необходимо задать для указанных переменных. Для QTDIR это полный путь нахождения корневой директории Qt (в моем случае, это "C:\Qt\ qt-everywhere-opensource-src-4.8.2 "). А вот QMAKESPEC должен содержать имя профиля сборки. Для выбранного компилятора MinGW, в арсенале Qt существуют два профиля: "win32-g++ " - для версий компилятора GCC ниже 4.6, и "win32-g++-4.6 " - для версий компилятора GCC 4.6 (задействован в последних версиях MinGW). Как видно из наименования профиля, оно складывается из двух частей - имени платформы и имени компилятора (ну это уже так... справочно:-), а особо интересующиеся могут ознакомиться с полным перечнем возможных профилей в директории mkspecs ).

4. Сконфигурировать библиотеку Qt.
Для этого необходимо в командной строке перейти в корневую директорию Qt (в моем случае "C:\Qt\ qt-everywhere-opensource-src-4.8.2 ") и вызвать программу "configure.exe" с интересующими опциями, исчерпывающий перечень которых, с кратким описанием, Вы можете получить вызвав "configure.exe" c опцией "-?". Но если Вы не понимаете с чем связались:-), то смело можете запускать конфигуратор безо всяких опций - он сконфигурирует библиотеку "по-умолчанию" (как это видется "создателям").
Процесс компиляции библиотеки долгий, поэтому некоторые программисты, дабы сократить время сборки, в момент конфигурации указывают опции отменяющие компиляцию программ демонстрации и различных примеров. Если Вы чувствуете, что это "добро" и Вам не понадобиться, смело "кормите" конфигуратору: -nomake demos -nomake examples .
В качестве демонстрации, как это выглядит в живую, приведу свой перечень опций конфигурирования библиотеки Qt:
configure.exe -debug-and-release -qt-libpng -qt-libjpeg -opensource -no-qt3support -qt-zlib -qt-libmng -qt-libtiff -nomake demos -nomake examples Конечно же, все это необходимо набирать в одну строчку... так... на всякий случай;-).

Обратите внимание на опцию -opensource , что, как не трудно догадаться, означает согласие использовать Open Source редакцию Qt, которая лицензируется под лицензиями GPL v.3, либо LGPL v. 2.1. Если Вами не будет указана соответствующая опция, то конфигуратор первым же вопросом захочет узнать Ваш выбор редакции - open source либо коммерческой (ну это не про нас:-)). Не забудьте следом подтвердить и свое согласие с указанными "свободными" лицензиями;-).

После того, как Вы ответите на все вопросы, конфигуратор создаст ключевой файл qmake.exe и makefile"ы модулей библиотеки Qt. Окончание этого процесса ознаменуется сообщением:
Qt is now configured for building. Just run mingw32-make. To reconfigure, run mingw32-make confclean and configure. и Вам только останется перейти к шагу 5...

5. Собрать библиотеку Qt.
Самый дли-и-и-и-и-и-ительный по времени выполнения пункт этой "инструкции" - компиляция библиотеки Qt. Все что нужно сделать на этом шаге - это набрать в командной строке:
mingw32-make откинуться на кровать или пойти погулять, ибо времени на весь процесс уйдет несколько часов. Так на моем 2-х ядерном Атлоне с 4 Гб ОЗУ потребовалось порядка 7 часов.
В некоторых других "мануалах", Вы можете увидеть рекомендацию компилировать только цель sub-src:
mingw32-make sub-src что оправдано в случаях, когда Вы будете использовать "чисто библиотеку" (яркий тому пример - связка с MS Visual Studio). Но если же Ваша работа, к слову, будет протекать в том же Qt Creator"е, то Вам понадобятся дополнительные утилиты, которые при сборке цели "sub-src" не компилируются. Да и выгода по времени - буквально несколько минут. Поэтому, можно особенно не загоняться и компилировать все.
В качестве рекомендаций к данному шагу хотел бы посоветовать Вам отключить антивирусы и прочие средства защиты, иначе они могу стать неожиданным источником проблем компиляции.

На этом все. Радуемся, что все получилось (надеюсь) и приступаем к созданию своих "эпических" программ;-)))).

Upd: тема сборки Qt5 затронута