Как собрать проект qt со всеми dll

Обновлено: 07.07.2024

Требования к системе

Вам очевидно потребуется git (>= 1.6.x) для получения пакетов.

Чтобы правильно сконфигурировать и собрать Qt 5 из исходных текстов, вам будут необходимы Perl (>=5.14) и Python (>=2.6.x), а так-же рабочий компилятор.

Linux/X11

Основы сборки

Ubuntu/Debian:

sudo apt-get install build-essential perl python git

Libxcb

Ubuntu/Debian:

sudo apt-get install "^libxcb.*" libx11-xcb-dev libglu1-mesa-dev libxrender-dev

Fedora 16 и выше:

su - -c "yum install libxcb libxcb-devel xcb-util xcb-util-devel"

Fedora 17+ (xcb-util-renderutil в настоящее время доступно в обновлениях тестового репозитария, но пока работает не устойчиво):

su - -c "yum —enablerepo=updates-testing install libxcb libxcb-devel xcb-util xcb-util-devel xcb-util--devel"

Команда установки perl-version для Fedora

su - -c "yum install perl-version"

sudo pacman -S —needed libxcb xcb-proto xcb-util xcb-util-image xcb-util-wm

На Linux Chakra, кроме пакетов, упомянутых для ArchLinux, вы должны дополнительно установить пакет xcb-util-keysyms. Этот пакет доступен из CCR.

Mandriva/ROSA/Unity:

urpmi 'pkgconfig(xcb)' 'pkgconfig(xcb-icccm)' 'pkgconfig(xcb-image)' 'pkgconfig(xcb-renderutil)'

Поддержка OpenGL

Для QtQuick2 настоятельно рекомендуется графический драйвер с собственной поддержкой OpenGL 2.0.

QtJsonDb

QtJsonDb зависит от libedit:

Ubuntu/Debian:

sudo apt-get install libedit-dev

Mandriva/ROSA/Unity:

Qt WebKit

Перед тем как компилировать webkit, вам потребуется установить следующие зависимые пакеты:

Ubuntu/Debian:

sudo apt-get install flex bison gperf libicu-dev libxslt-dev

su- -c "yum install gperf"

Mandriva/ROSA/Unity:

QtWayland зависимости

Mac OS X

XCode и GIT должно быть достаточно.

Windows

Графические драйверы Windows

Для работы QML2 потребуются драйвера OpenGL (Nvidia, и т.д.), с поддержкой OpenGL 2.1 или выше для вашей видеокарты. По умолчанию, в Windows установлены драйвера с поддержкой OpenGL 1.1, которой будет недостаточно.

Поддерживаемые компиляторы на Windows

Среда сборки Windows

Подсказка: Удостоверьтесь, что Perl описан в пути PATH перед git, так как последний имеет устаревшую версию (Perl 5. 8), и может прервать работу сценария.

Многопроцессорная сборка: При использовании nmake, может быть установлена переменная окружения CL (опция компилятора Visual Studio) set CL=/MP, давая компилятору команду использовать все ядра. Альтернативно, может использоваться инструмент jom [wiki.qt.io]. Однако, надо отметить, что у него есть проблемы с взаимозависимостями модуля, которые могут прервать сборку.

ICU на Windows

Во время компиляции include и lib папки установки ICU должны быть добавлены к INCLUDE и LIB переменным окружения после вызова сценария установки SDK Windows.

Во время выполнения ICU должны быть найдены DLL библиотеки. Это может быть достигнуто, с помощью копирования DLL в папку приложения или добавления папки bin установленного ICU в переменную окружения PATH.

Получение исходного кода

Сначала клонируйте верхний уровень git репозитария Qt 5:

После прочтения README [code.qt.io] - файла, мы инициализируем репозиторий, используя сценарий init-repository, который клонирует различные подмодули Qt5. Соответствующие опции:

cd qt5 perl init-repository

Если вы планируете участвовать в развитии Qt, вы должны определить codereview-username свое имя пользователя, это необходимо для того чтобы отделить особенности вашей версии:

perl init-repository --codereview-username <Jira/Gerrit username>

Конфигурирование и сборка

Установите путь так, чтобы использовать инструменты Qt5, а не старые Qt4 и прочие, которые могут присутствовать в системе:

Для Linux/Mac OS X:

unset QTDIR export PATH="$PWD/qtbase/bin:$PWD/qtrepotools/bin:$PATH"

Для Windows:

set QTDIR= set PATH=%CD%\qtbase\bin;%CD%\qtrepotools\bin;%PATH%

Теперь сконфигурируйте сборку (из директории верхнего уровня). Отключение тестов tests и примеров examples значительно ускорит компиляцию:

Для Linux/Mac OS X:

./configure -developer-build -opensource -nomake examples -nomake tests

Для Windows:

configure -developer-build -opensource -nomake examples -nomake tests

  • -developer-build - эта опция экспортирует больше символов, чем в традиционной сборке Qt, что позволяет большему количеству классов и функций быть протестированными модулем. Это также значение по умолчанию для сборки отладочной версии и установки двоичных файлов в текущем каталоге, и позволяет избежать потребности в 'make install'.
  • -opensource - устанавливает лицензию LGPL 2.1.
  • -nomake examples и -nomake tests - исключение из сборки тестов и примеров. В дальнейшем вы всегда можете собрать их отдельно.

Подсказка 1: На Linux вы должны также передать параметр -no-gtkstyle. Это вызвано тем, что в ряде систем (по крайней мере, SUSE и Gentoo) pkg-config —cflags gtk+–2.0 фактически возвращает пути, которые включают в систему Qt4.x-include каталоги.

Подсказка 2: Можете добавить -confirm-license, чтобы принять лицензию и избавиться от вопроса о ее принятии.

Запускаем сборку, вызывая build perl сценарий:

Для Windows (MSVC):

Или просто соберите определенный модуль, например, declarative, и модули, от которых он зависит:

Подсказка 1: build сценарий используется для сборки всей конфигурации. Для сборки модулей из каталогов с исходниками, вы можете выполнять команду make. Это тоже работает. Подсказка 2: jom, низкоуровневая замена nmake на Windows, она пока не правильно работает для высокоуровневых сборок. Однако, вы можете использовать его для (пере-)создания отдельных подмодулей.

Сборка QtWebKit

Для сборки потребуются инструменты bison, flex и gperf.

cd qtwebkit export WEBKITOUTPUTDIR="$PWD/WebKitBuild" perl Tools/Scripts/build-webkit --qt --qmake="$PWD/../qtbase/bin/qmake" --install-libs=<install dir> --debug

  • Добавить c:\phtreads\pthreads.2 в переменную окружения INCLUDE
  • Добавить c:\phtreads\Pre-built.2\lib\x64 или c:\phtreads\Pre-built.2\lib\x86 в переменную окружения LIB
  • Добавить c:\phtreads\Pre-built.2\dll\x64 или c:\phtreads\Pre-built.2\dllx86 в переменную окружения PATH

Инструменты bison, flex и gperf, которые требуются для сборки, предусмотрительно размещены в папке gnuwin32\bin.

set PATH=%PATH%;%CD%\gnuwin32\bin cd qtwebkit set WEBKITOUTPUTDIR=%CD%\WebKitBuild perl Tools\Scripts\build-webkit --qt --qmake="%CD%\\..\\qtbase\\bin\\qmake.exe" --install-libs=<install dir>

Установка (Linux / Mac OS X)

Примечание: Установка будет необходима только если вы не использовали опции -developer-build или -prefix "%PWD%/qtbase". В противном случае вы можете просто пользоваться Qt из каталога сборки.

Для установки, выполните

Но если вы желаете провести установку в нестандартный каталог, для того чтобы протестировать Qt5, вам необходимо описать где будет находиться каталог bin вашей установки в переменной PATH. Также вы должны или удостовериться, что не имеете переменнной среды QTDIR, или опишите в этой переменной путь установки перед тем как будете выполнять make install. Например, при установке в /opt/qt5 (это предполагает, использование bash; для csh-подобных оболочек вы должны будете сначала выполнить setenv эквиваленты):

PATH=/opt/qt5:$PATH QTDIR=/opt/qt5 make install

Очистка

Для получения действительно чистого дерева используйте:

git submodule foreach --recursive 'git clean -dfx'

с некоторых пор, confclean, больше не работает из верхнего уровня репозитария.

Получение обновлений

Чтобы обновить qt5.git репозитарий, а также подмодули до последних известных протестированных версий, выполните

git pull git submodule update --recursive

Если вы планируете делать ночные сборки, рассмотрите использование сценария qt5_tool, который находится в qtrepotools/bin. Этот сценарий предоставляет возможность обновления репозитария, очистки и сборки. Например,

qt5_tool -u -c -b может использоваться, чтобы очистить, обновить и собрать. А

qt5_tool -p -c- b используется для того чтобы получить все головные модули и их основные ответвления.

  • Подсказка 1:git submodule update делает "жесткий" сброс подмодулей, потенциально избавляя от любых нежелательных изменений которые вы сделали! Если это произошло с вами (и вы не работали с персональными ответвлениями), git reflog, ваш друг….
  • Подсказка 2: При создании сценариев для обновлений на Windows отметьте, что git clean часто сбоит, если какой либо процесс блокирует файл или папку.

Использование основных ответвлений в подмодулях

По умолчанию checkout не будет содержать последние основные ответвления каждого отдельного репозитария подмодуля, но содержит комбинацию версий, которые зависят друг от друга. Если требуется получить абсолютно последний материал, можете сделать например так:

cd qtdeclarative git fetch git checkout master origin/master

или используйте qt5_tool, чтобы обновить все репозитарии:

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

Известные проблемы

Linux

сбой конфигурации с "No QPA platform plugin enabled! " (Linux)

Вам необходимо установить libxcb, и его зависимые пакеты, см. 'Системные требования'.

Попытайтесь установить libx11-xcb-dev пакет:

sudo apt-get install libx11-xcb-dev

впоследствии вы должны повторно выполнить configure qtbase/src/plugins/platforms/xcb с опцией force для перекомпиляции.

WebKit не собирается при недостающем ICU

В настоящее время не конфигурируется проверка времени для ICU, так установите его через диспетчер пакетов.

для Ubuntu/Debian:

sudo apt-get install libicu-dev

для Fedora:

Windows

qdeclarative не компилируется из-за без вести пропавших v8.lib (Windows)

Проблема с отладкой OpenGL (Windows)

Установите переменную окружения QT_QPA_VERBOSE=gl:1 и запустите приложение с установленным DebugView. Журнал покажет требуемый по сравнению с полученной версией OpenGL. Если в логах журнала обнаружится что у него только OpenGL 1.1, то QML2 не будет работать. Обратите внимание на то, что qmlscene не будет сообщать об ошибках не поддерживаемых версий OpenGL.

Привет! Возможно кому-нибудь пригодится моя пошаговая инструкция

Инструментарий:
- Версия Qt: Qt 5.2.0 for Windows 32-bit (MinGW 4.8, OpenGL, 689 MB)

Примечание: после сборки можно будет создавать статические приложения, которые не требуют библиотек Qt и MinGW. Можно будет переключаться между сборками (которая по умолчанию и статической) через QtCreator.

- переходим в каталог C:\Qt\Qt5.2.0\5.2.0\Src\qtbase\mksp ecs\win32-g++ и открываем файл "qmake.conf"

- в файле "qmake.conf" отыскиваем переменную QMAKE_LFLAGS и приравниваем ей значение, вот так:

- отрываем терминал Пуск -> Qt 5.2.0 -> 5.2.0 -> MinGW 4.8 (32-bit) -> Qt 5.2.0 for Desktop (MinGW 4.8 32 bit)

- переходим в каталог с исходниками Qt, для этого вводим команду и нажимаем "Enter":

- конфигурируем этапы установки, для этого вводим команду и нажимаем "Enter":

configure -static -prefix "C:\Qt\Qt5.2.0_static" -opengl desktop -nomake examples -nomake tests

- выбираем тип лицензии "Open Source Edition" и подтверждаем лицензию

- ожидаем окончания конфигурирования

- производим компиляцию исходников Qt, для этого вводим команду и нажимаем "Enter":

- ожидаем окончания компиляции исходников (на моей машине это заняло 1 час 20 минут)

- копируем файлы в каталог установки (каталог установки мы указали на этапе конфигурирования C:\Qt\Qt5.2.0_static), для этого вводим команду и нажимаем "Enter":

- ожидаем окончания копирования

- в меню нажимаем "Инструменты" -> нажимаем "Параметры"

- слева выбираем "Сборка и запуск", а справа выбираем вкладку "Профили Qt"

- нажимаем кнопку "Добавить" и указываем путь до qmake.exe "C:\Qt\Qt5.2.0_static\bin\qmake.exe "

- нажимаем кнопку "Применить"

- переходим на вкладку "Комплекты" и нажимаем кнопку "Добавить"

- в поле "Название" вводим имя Desktop Qt 5.2.0 Static MinGW 32 bit

- если поле "Отладчик" пусто, то нажимаем кнопку "Управление"

- нажимаем кнопку "Добавить", вводим название (например gdb) и указываем путь к отладчику "C:\Qt\Qt5.2.0\Tools\mingw48_32\bit \gdb.exe"

- нажимаем кнопку "Применить"

- возвращаемся на на вкладку "Комплекты"

- в выпадающем списке "Профиль Qt" выбираем тот, которые мы указали на вкладке "Профили Qt"

- выделяем комплект "Desktop Qt 5.2.0 Static MinGW 32 bit" и нажимаем кнопку "Сделать по умолчанию" (если хотим чтобы комплект для статической сборки был поумолчанию)

- нажимаем кнопку "OK"

- протестируем, что приложения собираются статически

- создадим проект, для этого в меню нажимаем "Файл" -> нажимаем "Новый файл или проект. "

- слева в списке "Проекты" выбираем "Приложения" -> справа выбираем "Приложения Qt Widgets"

- в поле "Название" вводим: Hello_Static_Qt

- в поле "Создать" в вводим путь к папке с проектами, например: I:\QtProjects

- нажимаем кнопку "Далее"

- ставим галочки (по умолчанию должно быть выбрано) на два комплекта:

Desktop Qt 5.2.0 MinGW 32 bit
Desktop Qt 5.2.0 Static MinGW 32 bit

- нажимаем кнопку "Далее" -> нажимаем кнопку "Завершить"

- на панели слева нажимаем "Проекты"

- в верхней части экрана нажимаем "Desktop Qt 5.2.0 Static MinGW 32 bit"

- в разделе "Настройки сборки" в выпадающем списке "Изменить конфигурацию сборки" выбираем "Выпуск"

- находим раздел "Этапы сборки"

- напротив "qmake" выбираем "Подробнее"

- в выпадающем списке "Конфигурация сборки qmake" выбираем "Выпуск"

- в поле "Дополнительные параметры" вводим: "CONFIG += release" (с двойными кавычками)

- на панели слева нажимаем "Редактор"

- в меню нажимаем "Сборка" и нажимаем "Собрать проект "Hello_Static_Qt""

- переходим в папку с exe-файлом и запускаем его: I:\QtProjects\build-Hello_Static_Qt-Desktop_Qt_5_2_0_Static_MinGW_32bit-Выпуск\release

Всё в одном exe без зависимостей (статическая линковка в Qt 5.3.2)

2014-10-31 в 0:59, admin , рубрики: Песочница, метки: mingw, qt5, qtcreator, static, Windows7, инструкция

Программы, собранные на Qt требуют множество дополнительных файлов, таких как:

Qt5Widgets.dll
Qt5Gui.dll
Qt5Core.dll
libwinpthread-1.dll
libstdc++-6.dll
libgcc_s_dw2-1.dll
icuuc52.dll
Это далеко не полный список возможных зависимостей.

Как от них избавиться? Нужна статическая сборка Qt.

В интернете много разных статей на эту тему, но они мне не понравились по разным причинам. Поэтому я решил написать свою.

2. Проверить, что всё работает правильно
а) запустить Qt Creator, создать новый проект, собрать его, запустить;
б) закрыть Qt Creator и попробовать запустить *.exe отдельно от среды разработки;
в) убедиться в том, что программа требует кучу дополнительных библиотек;
г) закрыть всё, подумать о том, какая сложная штука — жизнь.
Теперь можно идти дальше.

4. Создать пустую папку для статической сборки (C:Qt5.3static)
В принципе, она может быть где угодно, главное чтобы была пустая.
Создать в ней файл make.bat с таким содержанием:

:: . check path.
set QtDir=C:Qt5.3static
set MingwDir=C:QtToolsmingw482_32
set QtSrcDir=C:Qt5.3Src
set CMAKE_INCLUDE_PATH=%MingwDir%i686-w64-mingw32include
:: Set a clean path including MinGW.
set PATH=%PATH%;%MingwDir%bin;%MingwDir%optbin
:: Force English locale to avoid weird effects of tools localization.
set LANG=en
:: Set environment variable QT_INSTALL_PREFIX. Documentation says it should be
:: used by configure as prefix but this does not seem to work. So, we will
:: also specify -prefix option in configure.
set QT_INSTALL_PREFIX=%QtDir%
:: Configure, compile and install Qt.
cmd /c "%QtSrcDir%configure.bat -static -debug-and-release -platform win32-g++ -prefix %QtDir% -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite -no-openssl -opensource -confirm-license -make libs -nomake tools -nomake examples -nomake tests" > log_cmd.txt
mingw32-make -k -j4 > log_make.txt
mingw32-make -k -j4 install > log_make_install.txt
pause

Проверить правильность всех путей. Это действительно важно.
Если всё правильно, сохранить и закрыть файл.

6. Настроить Qt Creator.
Параметры -> Сборка и запуск -> Профили Qt -> Добавить
Выбрать файл С:Qt5.3staticbinqmake.exe
Название профиля: Qt (static)

Параметры -> Сборка и запуск -> Комплекты -> Добавить
Название: Static
Тип устройства: Desktop
Устройство: Локальный ПК
Sysroot: C:Qt5.3static
Компилятор: MinGW
Отладчик: Не задан
Профиль Qt: Qt (static)

Теперь в Qt Creator доступен комплект статической сборки.
Проекты -> Сборка и запуск -> добавить -> Static

7. В файле проекта (*.pro) добавить флаги
QMAKE_LFLAGS += -static -static-libgcc

Наверное, как-то можно эти флаги убрать в параметры Qt Creator, но у меня это не получилось.

Это всё. Осталось только пересобрать свой проект с новым комплектом. Теперь можно запускать скомпилированные exe-файлы на любом компьютере под управлением Windows 7 или Windows XP. На других системах не тестировалось.

Надо отметить, что в результате статической линковки размеры exe-файлов существенно возрастают. Например, изначально exe-файл занимал всего 1,38 МБ и требовал различных библиотек в сумме на 43,5 МБ. После описанных процедур он увеличился до 16,1 МБ. Но уже всё, что надо, у него есть.

Приветсвуйю людей знающих, опытных и отзывчивых.
Судя по наблюдениям, в форумах принято задавать вопросы в виде:
"Я новичок, но хочу сам создать устройство для прослушивания вссех wi-fi устройств в радиусе 100км. Расскажите, пожалуйста, что такое транзистор и как он работает. В ГУГЛ НЕ ОТПРАВЛЯТЬ! Книжки читать не предлагать!"
Не нарушая сложившиеся традиции я постараюсь так же задать свой вопрос. . Хотя если честно, то я толком даже и не знаю что спросить.

Всем кто дочитал до этого места большое спасибо и всего вам хорошего.

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь


Создание образа диска из имеющихся файлов
Люди, кто знает можете помочь. Имеется определеное количество файлов с расширением r*, *-это цифры.


Создание папок с именами, соответсвующими расширениям имеющихся файлов, но без начальной точки
Создаю папки в powershell для файлов с разными расширениями.Название папок идет как название.


Создание файлов в папке без замены имеющихся путем замены цифр в их имени по порядку
Всем доброго времени суток! Надо при нажатии кнопку создавать файл &quot;Ins001.txt&quot; в директории.

Создание проекта в cmake для с и с++ файлов
Доброго времени суток. Есть вопрос. У меня с++ проект собирается с помощью cmake. Возникла.

1) Ты можешь просто добавить в директорию с проектом любые библиотеки C\C++ и с этим не будет никак проблем, потом просто добавить их в ИДЕ(что бы видеть из списка), ну и подключить их в коде - там где тебе нужно.
2) dll.a - это библиотека импорта, .a - это статическая библиотека, они воспринимается лишь GCC компилятором, а вообще, лучше прогугли (я не силен в этом вопросе).
3) Если говорить просто о minGW - то это GCC компилятор под винду. Скорее всего примеры в проектах настроены не под mingw, из-за того что ты скачал версию Qt не под MinGW.
Твоя: Qt (5.4.1 MSVC 2010, 32bit)
Нужна: Qt 5.4.1 for Windows 32-bit (MinGW 4.9.1, 856 MB)

Скачал Qt MinGW. Поставил. Примеры из Qt работают, через консоль екзешник создаётся. Тут вроде всё хорошо.

1)Как создать проект на Qt из тех файлов что у меня есть в примере, и вместо того чтобы использовать CMD.exe с несовсем понятной строкой, копилить, отлаживаться и запускать пример прям из Qt Creator? Создаешь в Qt Creator новый пустой проект. В левом окне появится дерево файлов проекта.
Изначально там будет только projectName.pro и main.cpp.
Далее тыркаешь правой клавишей мыши в projectName.pro.
В выпадающем меню выбираешь "Добавить существующие файлы. "
Соответственно выбираем нужные файлы и добавляем.
Проект готов.
2)Чем отличаются Biblioteka.dll от Biblioteka.а? Зачем и (что такое) MinGW и чем он лучше остальных?

.dll (dynamic link library) динамически подключаемая библиотека.
.a статическая библиотека для UNIX - систем.
Для винды статическая библиотека имеет расширение .lib

Читайте также: