Qt всех создать - Qt Creator нуждается в компиляторе для сборки. Настройка компилятора в настройках набора. Компиляция qt из исходников компилятором из состава CodeBlocks

Qt всех создать - Qt Creator нуждается в компиляторе для сборки. Настройка компилятора в настройках набора. Компиляция qt из исходников компилятором из состава CodeBlocks

15.05.2019

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

Параллельная компиляция Qt-проектов под Windows с использованием QtCreator - зверь загадочный и очень привередливый. В этой небольшой статье я расскажу, как же все-таки его приручить. Параллельная компиляция может быть выполнена достаточно просто в теории, на практике дела обстоят не совсем гладко, чему в подтверждение бесконечное число тем на форумах, где предлагаются всевозможные решения. Ни одно из них, к сожалению, нам не помогло.


В теории для случая MinGW достаточно указать параметр –j[число процессов компиляции] у команды сборки make, которая в QtSDK MinGW представлена mingw32-make. Например, получается команда mingw32-make.exe –j10.

Рекомендуемое число процессов компиляции составляет число процессоров+1. Если параметр не задается, то считается, что j=1. Если указать слишком большое число также ничего страшного не случится. Make запустит ровно столько, сколько дает прирост производительности.

Для удобства можно воспользоваться переменной окружения %NUMBER_OF_PROCESSORS%, которая показывает число процессоров в системе. Получается команда вида

Mingw32-make.exe –j%NUMBER_OF_PROCESSORS%

Однако, не все так просто. Qmake создает три make-файла. Общий Makefile, который по определенным define’ам выбирает из Makefile.Debug и Makefile.Release в зависимости от сборки релиза или дебага. Дело в том, что параметр –j не наследуемый . И когда в QtCreator вызывается make, то он вызывается для Makefile. А вот до Makefile.Debug или Makefile.Release уже не добирается.

Для того чтобы это исправить придется написать команду в явном виде . Например,

Mingw32-make.exe –j9 –f Makefile.Debug.

Не очень удобно, но прирост скорости сборки это сильно компенсирует. Для примера, пересборка нашего проекта на core-i7-2630 без распараллеливания осуществляется за 12 минут, с флагом –j9 сборка занимает менее двух минут. Прирост производительности в шесть раз заставляет задуматься.

Но даже после указания таких флагов сборки у нас на двух машинах это стало работать, а на двух нет. На форумах пишут, что дело может быть в версии Qt, в кривости mingw, в особенностях работы qmake, версии ОС. Однако, конфигурации наших машин таковы, что методом исключения можно сделать вывод о непричастности версий QtSDK, QtCreator, Windows или разрядности системы ко всему этому.

Решение оказывается очень простым, но в тоже время не таким очевидным. Нужно добавить абcолютный путь к mingw32-make в переменную окружения PATH. На всякий случай, лучше поставить точку с запятой после пути. И после этого чудесным образом начинает работать параллельная компиляция, а программистам не придется по 10 минут отвлекаться каждый раз при добавлении какого-нибудь Q_OBJECT к проекту и его пересборке.

Все эти флаги компиляции могут быть заданы в QtCreator на вкладке Проекты в параметрах make.

Надеюсь, статья окажется полезным и решит вопросы многих у кого до этого не работала параллельная сборка в QtCreator.

UPD (из комментариев) : Что касается Linux/MacOS пользователей, им повезло гораздо больше - достаточно только ключа -jX.

Также если вы используете компилятор MSVC, то проблем быть не должно.

В случае QtCreator нужно добавить запись
QMAKE_CXXFLAGS_RELEASE += -MP[число процессов]
в.pro файл проекта и установление переменной окружения как я описал.

В случае Visual Studio свойствах VS проекта: «Properties»=>«Configuration Properties»=>«C/C++»=>«Command Line». А в поле «Additional options» дописать -MP[число процессов]. Спасибо IGHOR

Также при использовании компилятора MSVC помочь может jom.

Постоянную часть флагов можно вынести в отдельную переменную окружения MAKEFLAGS. Make сам возьмет оттуда установленные флаги. К примеру MAKEFLAGS=-j10. А в параметрах make остается только не забыть указать файл для сборки. Например, -f Makefile.Debug. Если вы все время собираете одну версию, то можно вынести все флаги целиков в MAKEFLAGS и забыть про настройку будущих проектов.

Спасибо всем за дополнения.

Для работы с Qt 4-й версии необходимо все компоненты устанавливать отдельно (В 5-й версии Qt это недоразумение было исправлено). Для работы потребуется три программы:

  • MinGw 4.8.2 - это Linux-утилиты для среды Windows. В состав входит C++ компилятор, именуемый g++;
  • Qt 4.8.6 - это непосредственно сам SDK 4-й версии (актуально на момент написания этой статьи);
  • Qt Creator 4.0.2 - это среда разработки.

Каждый компонент устанавливается в отдельный каталог. Я использую каталоги:

C:\tools\qt\mingw_4_8_2

C:\tools\qt\qt_4_8_6

C:\tools\qt\qt_creator_4_0_2

Но можно использовать любые.

Последовательность установки: MinGW - Qt - Qt Creator.

Утилиты MinGw 4.8.2

В момент инсталляции указывается каталог типа C:\tools\qt\mingw_4_8_2 .

Qt 4.8.6

Сам Qt SDK версии 4.8.6 берется здесь:

Если нет Microsoft Visual Studio, то нужна версия Qt для компилятора MinGw. В имени инсталлятора должны присутсвовать буквы mingw . Прямой линк на Qt 4.8.6 для MinGw:

В момент инсталляции указывается каталог типа C:\tools\qt\qt_4_8_6 .

Кроме каталога инсталляции, инсталлятор запросит каталог, в котором находится компилятор MinGw:

Нужно указать каталог, куда был установлен MinGw: C:\tools\qt\mingw_4_8_2 .

Qt Creator 4.0.2

Qt Creator 4.0.2 берется со страницы:

Прямой линк на загрузку:

В момент инсталляции указывается каталог типа C:\tools\qt\qt_creator_4_0_2 .

Настройка среды разработки Qt Creator 4.0.2

В Qt Creator первым делом необходимо зайти в Инструменты - Параметры - Сборка и запуск - Вкладка "Профили Qt" . Там нужно нажать кнопку "Добавить", задать имя профиля "Qt 4.8.6", и указать месторазмещение файла qmake.exe . Он находится в подкаталоге /bin каталога, куда был установлен Qt 4.8.6:

Нажав кнопку "Подробнее", нужно посмотреть, какое ABI использует эта сборка Qt 4.8.6. Эта информация потребуется ниже.

Далее нужно переключиться на вкладку "Компиляторы" . Нажимается нопка "Добавить", вводится название "MinGW 4.8.2", и указывается месторазмещение исполняемого файла компилятора g++, который находится в подкаталоге /bin каталога, куда был установлен MinGW.

Внимание! Нужно указывать именно файл g++! В том же каталоге есть файл c++, и если его указать, то ничего не заработает.

Так же нужно проверить, чтобы строка ABI соответствовала ABI, который был записан для сборки Qt. Если строка не соответствует, ее надо исправить путем выбора пункта "<особое>" в выпадающем списке и выбра нужных пунктов в последующих выпадающих списках.

Внимание! На низких разрешениях мониторов окно настройки может быть узким, и в него не будут влазить выпадающие списки -pe и -32bit (как на картинке выше). В этом случае, надо временно расширить окно, утащив левую часть окна за пределы монитора, и сделать правильную настройку.

Иногда, если на вкладке "Профили Qt" возле конфигурации Qt стоит красный значек с восклицательным знаком, и при этом ABI в выпадающем списке вкладки "Компиляторы" соответствует ABI вкладки "Профили Qt", то становится непонятно в чем проблема. На самом деле это небольшой глюк креатора. Чтбы его обойти, нужно в настройке ABI выбрать пункт "<особое>", и настроить вручную сегменты ABI выпадающими списками.

На этом настройка закончена. Теперь при открытии/создании проектов в Qt Creator можно добавлять конфигурацию Qt 4.8.6 путем нажатия кнопки "Добавить":

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

Показать

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


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 затронута



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows