Qt сборка из исходников

Материал из Wiki семьи Белых
Перейти к: навигация, поиск

Подготовка

  1. Сделать сборки OpenSSL компилятором, которым будет проводиться сборка Qt, версии для релиза и дебага, того же варианта линковки, который будет использоваться при сборке Qt, но можно только статически.
    1. Скопировать каталог openssl из OpenSSL_x86_Shared_Release_VisualStudio\include в каталог C:\Lib\include
      Для Visual Studio 32 скопировать файлы
      1. libeay32.dll и ssleay32.dll из каталога OpenSSL_x86_Shared_Release_VisualStudio\bin в C:\Lib\Lib32_VS2015\OpenSSL с именами libeay32.dll и ssleay32.dll соответственно.
      2. libeay32.lib и ssleay32.lib из каталога OpenSSL_x86_Shared_Release_VisualStudio\lib в C:\Lib\Lib32_VS2015\OpenSSL с именами libeay32.lib и ssleay32.lib соответственно.
      3. libeay32.dll и ssleay32.dll из каталога OpenSSL_x86_Shared_Debug_VisualStudio\bin в C:\Lib\Lib32_VS2015\OpenSSL с именами libeay32D.dll и ssleay32D.dll соответственно.
      4. libeay32.lib и ssleay32.lib из каталога OpenSSL_x86_Shared_Debug_VisualStudio\lib в C:\Lib\Lib32_VS2015\OpenSSL с именами libeay32D.lib и ssleay32D.lib соответственно.
      5. libeay32.lib и ssleay32.lib из каталога OpenSSL_x86_Static_Releasw_VisualStudio\lib в C:\Lib\Lib32_VS2015\OpenSSL с именами libeay32S.lib и ssleay32S.lib соответственно.
      6. libeay32.lib и ssleay32.lib из каталога OpenSSL_x86_Static_Debug_VisualStudio\lib в C:\Lib\Lib32_VS2015\OpenSSL с именами libeay32SD.lib и ssleay32SD.lib соответственно.
  2. Сделать сборки MySQL компилятором, которым будет проводиться сборка Qt, версии для релиза и дебага, того же варианта линковки, который будет использоваться при сборке Qt, но можно только статически.
    1. Скопировать содержимое папки mysql-%Version%\include из пакета mysql с официального сайта в каталог C:\Lib\include\mysql
    2. Скопировать файлы libmysql.dll, libmysqld.dll, libmysql.lib, libmysqld.lib, mysqlclient.lib из подкаталога libmysql\Release сборочного каталога
      для Visual Studio 32: MySQL_32_Release в каталог C:\Lib\Lib32_VS2015\MySQL\Release
    3. Скопировать файлы libmysql.dll, libmysqld.dll, libmysql.lib, libmysqld.lib, mysqlclient.lib из подкаталога libmysql\Debug сборочного каталога
      для Visual Studio 32: MySQL_32_Debug в каталог C:\Lib\Lib32_VS2015\MySQL\Debug
  3. Сделать бэкап Qt%Version%\Src (а еще лучше всего каталога с Qt)

Сборка

Сборка с поддержкой MySQL

MiniGW

  1. Создать резервную копию qmake.conf, он находится в «Qt%VERSION%\mingw492_32\mkspecs\win32-g++»
  2. Сделать изменения в qmake.conf
Файл: Qt%VERSION%\mingw492_32\mkspecs\win32-g++
QMAKE_LFLAGS += -static-libgcc -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
DEFINES += QT_STATIC_BUILD

Запустить теримнал Qt и перейти в каталог с исходными кодами Qt

Настроить параметры сборки командой

Code: Configure
configure -static -debug-and-release -platform win32-g++ -c++11 -prefix " e:\Qt\5.6\minigw_4.9.2_static" \
-opensource -confirm-license -nomake examples -nomake tests -nomake tools -qml-debug -opengl desktop -no-angle -make libs \
-qt-pcre -qt-libpng  -qt-libjpeg -qt-libtiff -qt-zlib -qt-freetype -fontconfig -qt-sql-sqlite -qt-sql-odbc -qt-sql-mysql \
-I "c:\Program Files (x86)\MySQL\MySQL Connector.C 6.1\include"  -L "c:\Program Files (x86)\MySQL\MySQL Connector.C 6.1\lib" -l libmysql
  • Предполагается MySQL Connector С находится в каталоге c:\Program Files (x86)\MySQL\MySQL Connector.C 6.1
  • Предполагается, что устанавливаться профиль Qt будет в e:\Qt\5.6\minigw_4.9.2_static. Необходимо избегать пробелов и нелатинские символы путях.

Замечание: Библиотека libmysql не будет включена в статическую линковку, оставаясь доступна динамически.

Запустить сборку

Code: Make
mingw32-make

Процесс сборки занимает достаточно большое время.

После сборки выполнить установку

Code: Make Install
mingw32-make install

Линковка библиотеки GCC

В статический комплект не будут включены библиотеки gcc, что бы они так же собирались в исполняемый файл, надо прописать в .pro/.pri

Файл: *.pro
QMAKE_LFLAGS_RELEASE += -static -static-libgcc

Visual Studio

Создать каталог сборки Build_Qt_VS2015_32_static по соседству с каталогом с исходниками Qt. Перейти в него.

Динамическая линковка

В файле Src\qtbase\mkspecs\common\msvc-desktop.conf проверяем, чтобы следующие троки были указанного вида:

Файл: Src\qtbase\mkspecs\common\msvc-desktop.conf для сборки с динамической линковкой
QMAKE_CFLAGS_RELEASE    = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MDd

Выполняем настройку сборки

Code: Configure для сборки версии x86 с динамической линковкой
..\..\Src\configure.bat -shared -debug-and-release -platform win32-msvc2015 -c++std c++11 -prefix "..\..\..\..\..\Qt\5.7\msvc2015_shared" -opensource -confirm-license -nomake examples -nomake tests -make tools -qml-debug -opengl dynamic -system-proxies -make libs -qt-pcre -qt-libpng -qt-libjpeg -qt-zlib -qt-freetype -plugin-sql-sqlite -plugin-sql-odbc -plugin-sql-mysql -openssl OPENSSL_LIBS="-lUser32 -lAdvapi32 -lGdi32" OPENSSL_LIBS_RELEASE="-llibeay32MD -lssleay32MD" OPENSSL_LIBS_DEBUG="-llibeay32MDd -lssleay32MDd" -l libmysql -I "c:\Lib\include\mysql" -I "c:\Lib\include\openssl" -L "c:\Lib\Lib32_VS2015\MySQL" -L "c:\Lib\Lib32_VS2015\OpenSSL" -L "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib"
Code: Configure для сборки версии x64 с динамической линковкой
..\..\Src\configure.bat -shared -debug-and-release -platform win32-msvc2015 -c++std c++11 -prefix "..\..\..\..\..\Qt\5.7\msvc2015_x64_shared" -opensource -confirm-license -nomake examples -nomake tests -make tools -qml-debug -opengl dynamic -system-proxies -make libs -qt-pcre -qt-libpng -qt-libjpeg -qt-zlib -qt-freetype -plugin-sql-sqlite -plugin-sql-odbc -plugin-sql-mysql -openssl OPENSSL_LIBS="-lUser32 -lAdvapi32 -lGdi32" OPENSSL_LIBS_RELEASE="-llibeay32MD -lssleay32MD" OPENSSL_LIBS_DEBUG="-llibeay32MDd -lssleay32MDd" -l libmysql -I "c:\Lib\include\mysql" -I "c:\Lib\include\openssl" -L "c:\Lib\Lib64_VS2015\MySQL" -L "c:\Lib\Lib64_VS2015\OpenSSL" -L "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64"

Запустить сборку

Code: Make
nmake /nologo

После сборки выполнить установку

Code: Make
nmake /nologo install

После установки в подкаталоге lib каталога с готовым профилем Qt во всех файлах *d.prl меняем "libmysql" на ее дебадный вариант "libmysqld" (не путатать с реально существующей библиотекой libmysqld.lib, получаемой при сборке MySQl версии Release)


Статическая линковка

В файле Src\qtbase\mkspecs\common\msvc-desktop.conf проверяем, чтобы следующие троки были указанного вида:

Файл: Src\qtbase\mkspecs\common\msvc-desktop.conf для сборки со статической линковкой
QMAKE_CFLAGS_RELEASE    = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG      = -Zi -MTdd

Выполняем настройку сборки

Code: Configure для сборки версии x86 со статической линковкой
..\..\Src\configure.bat -static -debug-and-release -platform win32-msvc2015 -c++std c++11 -prefix "..\..\..\..\..\Qt\5.7\msvc2015_static" -opensource -confirm-license -nomake examples -nomake tests -make tools -qml-debug -opengl dynamic -system-proxies -make libs -qt-pcre -qt-libpng -qt-libjpeg -qt-zlib -qt-freetype -qt-sql-sqlite -qt-sql-odbc -qt-sql-mysql -openssl -openssl-linked OPENSSL_LIBS="-lUser32 -lAdvapi32 -lGdi32" OPENSSL_LIBS_RELEASE="-llibeay32MT -lssleay32MT" OPENSSL_LIBS_DEBUG="-llibeay32MTd -lssleay32MTd" -l mysqlclient -I "c:\Lib\include\mysql" -I "c:\Lib\include\openssl" -L "c:\Lib\Lib32_VS2015\MySQL" -L "c:\Lib\Lib32_VS2015\OpenSSL" -L "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib"
Code: Configure для сборки версии x64 со статической линковкой
..\..\Src\configure.bat -static -debug-and-release -platform win32-msvc2015 -c++std c++11 -prefix "..\..\..\..\..\Qt\5.7\msvc2015_x64_static" -opensource -confirm-license -nomake examples -nomake tests -make tools -qml-debug -opengl dynamic -system-proxies -make libs -qt-pcre -qt-libpng -qt-libjpeg -qt-zlib -qt-freetype -qt-sql-sqlite -qt-sql-odbc -qt-sql-mysql -openssl -openssl-linked OPENSSL_LIBS="-lUser32 -lAdvapi32 -lGdi32" OPENSSL_LIBS_RELEASE="-llibeay32MT -lssleay32MT" OPENSSL_LIBS_DEBUG="-llibeay32MTd -lssleay32MTd" -l mysqlclient -I "c:\Lib\include\mysql" -I "c:\Lib\include\openssl" -L "c:\Lib\Lib64_VS2015\MySQL" -L "c:\Lib\Lib64_VS2015\OpenSSL" -L "c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64""

Запустить сборку

Code: Make
nmake /nologo

После сборки выполнить установку

Code: Make
nmake /nologo install

После установки в подкаталоге lib каталога с готовым профилем Qt во всех файлах *d.prl меняем "mysqlclient" на ее дебадный вариант "mysqlclientd".