Сборка Qt из исходников компилятором MinGW. Qt всех создать - Qt Creator нуждается в компиляторе для сборки

Детские товары 18.05.2019
Детские товары

В данной статье я описываю свой опыт компиляции библиотеки 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 я не стал долго думать:

Показать

Для меня в Windows 7 это было разрешено, щелкнув значок стрелки рядом с значком компьютера в левом нижнем углу экрана Qt Creator над зелеными стрелками, а затем дважды щелкнул компилятор в списке и перестроил проект.

2018-12-04T00:00Z

Когда я установил Qt в папку ~/Qt/ а затем вручную переименовал папку в нечто другое, у меня возникла аналогичная проблема. Когда я восстановил имя папки в исходном файле ~/Qt/ (указанном в установщике Qt), проблема исчезла; все было решено.

2018-12-11T00:00Z

У меня была аналогичная проблема при разработке на моем Mac -

Я пытался создать настольную разработку с создателем QT 3.3.0 на основе QT 5.4.0 (Clang 6.0 (Apple)) на OSX 10.9. Попробовав вручную изменить мои наборы для использования GCC, G ++ и CLANG. Я наконец нашел это очень простое решение:

Удалите файл xxx.pro.user и перезапустите QT Creator. Затем он автоматически подбирает ваши компиляторы / среды.

2018-12-18T00:00Z

* только для пользователей Windows *

Прежде чем перейти к следующим шагам, убедитесь, что у вас установлена ​​последняя версия Qt.

  1. Загрузите и установите minGW-64-bit из ссылки:
  2. Запомнить Каталог, в который вы устанавливаете minGW.
  3. Откройте создатель Qt и перейдите к инструментам -> параметры -> Сборка и запуск
  4. На вкладке «Компиляторы» выберите add -> MinGW ->
    Имя: MinGW
    path: Просмотр mingw-w64.bat (вы найдете этот файл в каталоге, в котором вы установили MinGW).
    ABI: x86 Windows msvc2015 pe 64bit

    Не забудьте применить свои изменения.

    Перейти в Kit -> добавить
    Имя: GCC
    Тип устройства: рабочий стол
    Устройство: локальный ПК (по умолчанию для рабочего стола)
    Компилятор: minGW
    Версия Qt: выберите новейшую версию

    Применить изменения и перезапустить qt

При создании нового проекта убедитесь, что вы используете GCC как комплект

Если он все еще не работает, щелкните значок компьютера внизу слева над кнопкой воспроизведения -> GCC -> Сборка

ИЛИ

Перейти к проектам (это в меню слева) -> Шаги сборки -> сделать -> Переопределить файл minGw31-make.exe -> перейти к пути, в котором вы установили minGW / bin \ mingw32-make.exe
Сделайте то же самое для чистых шагов тоже

Если u все равно получите любую ошибку после этих шагов, попробуйте установить переменные окружения

  1. Нажмите Win + Q
  2. Введите «Переменные среды»
  3. нажмите «Редактировать переменные системной среды»
  4. Свойства системы -> Advance -> Переменные среды
  5. Нажмите на путь (ПРИМЕЧАНИЕ. Используйте эти шаги очень осторожно и не возитесь с другими опциями )
  6. Нажмите править
  7. нажмите стрелку вправо, чтобы перейти к концу текста.
  8. введите полуточку (если она не находится в конце ее, потому что все системные пути отличаются точкой с запятой)
  9. paste path "MinGW_installation_directory \ bin" (В моем случае это было «G: \ Qt \ Tools \ mingw32 \ bin»). Убедитесь, что вы скопируете и вставьте путь CORRECT
  10. Нажмите «ОК» и примените изменения.

Это должно сделать это!!!

Настройка 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 .

Для быстрой разработки кроссплатформенных приложений весьма просто ставится в 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 . Среда разработки предложит настроить его. С её предложением мы согласимся, оставим как есть, и нажмем кнопку Настроить проект .



Рекомендуем почитать

Наверх