Compile Qt 5.5 source code in Windows 10 detailed process, detailed steps
Following compilation process is suitable only for Qt 5.5 and subversion, has been tested safe for use (Except for unforeseen circumstances).
From Qt official website or Domestic Mirror Download the source code.
Note: 从 Qt 官网 git 下载的源代码可能无法使用,因为经常修改可能不稳定。
git Get the Source Code --> cmd --> X: --> cd ./Qt --> git clone git://code.qt.io/Qt/qt5.git --> cd ./qt5 --> git checkout 5.5 --> git submodule update --init --recursive
git Update the Source Code --> cmd --> X: --> cd ./Qt/qt5 --> git remote -v --> git fetch origin --> git log -p 5.5 origin/5.5 --> git merge origin/5.5 --> git submodule update
Install Windows SDK 10.0.18362 (Required when compiling qtwebkit)
把 C:\Program Files (x86)\Windows Kits\10\bin\;C:\Program Files (x86)\Windows Kits\10\lib\;C:\Program Files (x86)\Windows Kits\10\Include\; 添加到 path 环境变量
把 C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.18362.0\um\x64\; 添加到 path 环境变量
把 C:\Program Files (x86)\Windows Kits\10\Redist\D3D\x64\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\; 添加到 path 环境变量
把 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64\;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64\; 添加到 path 环境变量
在编译 ANGLE 时需要 DirectX 11 (仅适于 Windows 7),Windows SDK 10.0.18362 带有 DirectX 12 (通过 dxdiag 命令查看版本)。
位置 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010) --> 把 C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Utilities\bin\x64\; 添加到 path 环境变量
Install Visual Studio 2010 Ultimate (x86) English edition (非英文版编译时, 某些字符由于存在兼容性问题可能出错)
位置 X:\MSVC\Microsoft Visual Studio 10.0 --> 勾选 Microsoft Visual Studio 2010 Ultimate 下 Visual C++ --> 去除其它非必要安装项
安装 mu_visual_studio_2010_sp1_x86_x64_dvd_651704.iso 升级包 --> 把 X:\MSVC\Microsoft Visual Studio 10.0\VC\bin\; 添加到 path 环境变量
Install qt-opensource-windows-x86-5.x.exe (或带 qmake 的其它 *.EXE 二进制发行版) --> 安装时需要填入 Qt 用户账号 (没有账号需要先申请) -->
安装位置 X:\Qt\Qt5.x --> 成功完成后,添加以下环境变量:
把 C:\Windows;C:\Windows\System32; 和 X:\Qt\Qt5.x\5.x\msvc201x_64\bin\; 添加到 path 环境变量头部
查看版本 --> cmd --> qmake -v
Install Python 2.7.9 or later (Not support Python 3.x, required when compiling qtwebkit)
位置 X:\Python27 --> 勾选 Add python.exe to Path 环境变量 --> 把 F:\Python27\;F:\Python27\Scripts\; 添加到 path 环境变量
查看版本 --> cmd --> python -v
Install ActivePerl 5.22 or later
把 C:\Perl64\bin\;C:\Perl64\lib\; 及 C:\Perl64\site\bin\;C:\Perl64\site\lib\; 添加到 path 环境变量
查看版本 --> cmd --> perl -v
下载 Rubyinstaller-2.4.2-x64.exe --> 安装 Rubyinstaller-2.4.2-x64.exe (编译 qtwebkit 时需要)
位置 X:\Ruby24-x64 --> 勾选 Add Ruby executables to your PATH 环境变量 --> 把 X:\Ruby24-x64\bin\;F:\Ruby24-x64\lib\; 添加到 path 环境变量
查看版本 --> cmd --> ruby -v
到 https://sourceforge.net/projects/getgnuwin32 下载 GetGnuWin32-0.6.3.exe --> 安装位置 X:\GnuWin32 --> 把 X:\GnuWin32\bin\;X:\GnuWin32\lib\; 添加到 path 环境变量
到 https://sourceforge.net/projects/winflexbison 下载 win_flex_bison3-latest.zip --> 解压到 X:\win_flex_bison 目录下 --> 把 X:\win_flex_bison\; 添加到 path 环境变量 --> 若在 qt5.git 之外构建 qtbase,把 win_bison 和 win_flex 重命名为 bison 和 flex
到 https://sourceforge.net/projects/gnuwin32 下载 bison-2.4.1 --> 安装位置 X:\GnuWin32 --> 安装 flex-2.5.4a-1 --> 安装 gperf-3.0.1 --> 安装 grep-2.5.4 --> 安装 libiconv-1.9.2-1
编译 ANGLE qtwebkit 时需要 Bison、Flex、GPerf
若以上 GnuWin32 链接无法下载,请转至 Domestic Mirror
注意:OpenSSL 版本不通过低也不能过高,否则无法使用。
安装 Win64OpenSSL 1.1.0 以下版本 (OpenSSL 1.1 及之后版本,尚不兼容)
位置 X:\OpenSSL-Win64 --> 勾选 Copy OpenSSL DLLs to: The OpenSSL binaries (/bin) directory
把 X:\OpenSSL-Win64\bin\;X:\OpenSSL-Win64\lib\; 添加到 path 环境变量
下载 icu4c-58.2-Win64-MSVC2010.7z --> 解压 icu4c-58.2-Win64-MSVC2010.7z 到 X:\icu4c
把 X:\icu4c\bin\;X:\icu4c\lib\; 添加到 path 环境变量
qtwebkit 编译设置。
控制面板 --> 时间、语言和区域 --> 区域 --> 更改位置 --> 管理 --> 更改系统区域设置 --> 英语(美国)--> 确定 --> 重启
解压 qt-everywhere-opensource-src-5.5.0.zip 到 X:\Qt\qt-everywhere-opensource-src-5.5.0 目录下 (注意:此硬盘分区 100GB 以上)
使用 Data Compare 工具, 比对 qt-opensource-windows-x86-5.5.0.exe 安装包自带源码 (查看源码是否差异太大, 是否存在问题)
调用 Visual Studio x64 Win64 Command Prompt (2010) (如有更新环境变量, 需重启此窗口) --> X: --> cd .\Qt\qt-everywhere-opensource-src-5.5.0
configure -confirm-license -opensource -platform win32-msvc2010 -release -mp -prefix "X:\Qt\Qt5.5.0_x64_custom\5.5\msvc2010_64" -opengl es2 -angle -icu -qt-pcre -qt-zlib -qt-freetype -qt-libpng -qt-libjpeg -qt-sql-sqlite -plugin-sql-sqlite -largefile -nomake tests -nomake examples -openssl -I X:\OpenSSL-Win64\include -L X:\OpenSSL-Win64\lib -I X:\icu4c\include -L X:\icu4c\lib64 -target xp
编译并将结果拷贝到 X:\Qt\Qt5.5.0_x64_custom 目录下
jom --> jom install 或 nmake --> nmake install
到 http://www.sqlite.org/download.html 下载 sqlite-amalgamation-3190300.zip 源代码 --> 解压到 X:\sqlite3 目录下 --> 把 X:\Qt\Qt5.5.0\5.5\msvc2015_64\bin\; 改为 X:\Qt\Qt5.5.0_x64_custom\5.5\msvc2010_64\bin\; 添加到 path 环境变量
Visual Studio x64 Win64 Command Prompt (2010) --> X: --> cd .\Qt5.5.0\qtwebkit --> set SQLITE3SRCDIR=X:\sqlite3 --> set QTDIR=X:\Qt\Qt5.5.0_x64_custom\5.5\msvc2010_64 --> perl Tools\Scripts\build-webkit --qt --release --> perl Tools\Scripts\build-webkit --qt --makeargs=qmake --release
安装 qtwebkit --> cd .\WebKitBuild\Release --> nmake install
测试 qtwebkit --> 把 X:\Qt\Qt5.5.0_x64_custom\5.5\msvc2010_64\lib\; 添加到 path 环境变量 --> 双击运行 X:\Qt5.5.0\qtwebkit\WebKitBuild\Release\bin\QtTestBrowser.exe
Qt5.5.1\qtwebkit --> flex --noline --nounistd --outfile=generated\glslang_lex.cpp src\compiler\glslang.l C:\Program Files\GnuWin32\bin\flex.EXE: unknown flag '-'. --> 把 X:\win_flex_bison\win_flex.exe 重命名成 X:\win_flex_bison\flex.exe --> 把 X:\win_flex_bison\win_bison.exe 重命名成 X:\win_flex_bison\bison.exe --> 把 X:\GnuWin32\bin\flex.exe 重命名成 X:\GnuWin32\bin\backup_flex.exe --> 把 X:\GnuWin32\bin\bison.exe 重命名成 X:\GnuWin32\bin\backup_bison.exe
Qt5.5.1\qtwebengine --> warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 --> qtcreator --> 工具 --> 选项 --> 文本编辑器 --> 行为 --> UTF-8 BOM: 如果编码是 UTF-8 则添加 --> 打开文件 --> 保存文件
Related tools or software, please go to Download Center .
If you still can’t compile, can contact Customer Service for help (Or watch the related online resources of Happy Digits Software)。
Qt 5.5.1 in the CMD window, configure -? output information.
X:\Qt\qt-everywhere-opensource-src-5.5.1>configure -help + cd qtbase + X:\Qt\qt-everywhere-opensource-src-5.5.1\qtbase\configure.bat -top-level -help Usage: configure [options] Installation options: These are optional, but you may specify install directories. -prefix <dir> ...... The deployment directory, as seen on the target device. (default %CD%) -extprefix <dir> ... The installation directory, as seen on the host machine. (default SYSROOT/PREFIX) -hostprefix [dir] .. The installation directory for build tools running on the host machine. If [dir] is not given, the current build directory will be used. (default EXTPREFIX) You may use these to change the layout of the install. Note that all directories except -sysconfdir should be located under -prefix/-hostprefix: -bindir <dir> ...... User executables will be installed to <dir> (default PREFIX/bin) -libdir <dir> ...... Libraries will be installed to <dir> (default PREFIX/lib) -headerdir <dir> ... Headers will be installed to <dir> (default PREFIX/include) -archdatadir <dir> . Architecture-dependent data used by Qt will be installed to <dir> (default PREFIX) -libexecdir <dir> .. Program executables will be installed to <dir> (default ARCHDATADIR/bin) -plugindir <dir> ... Plugins will be installed to <dir> (default ARCHDATADIR/plugins) -importdir <dir> ... Imports for QML1 will be installed to <dir> (default ARCHDATADIR/imports) -qmldir <dir> ...... Imports for QML2 will be installed to <dir> (default ARCHDATADIR/qml) -datadir <dir> ..... Data used by Qt programs will be installed to <dir> (default PREFIX) -docdir <dir> ...... Documentation will be installed to <dir> (default DATADIR/doc) -translationdir <dir> Translations of Qt programs will be installed to <dir> (default DATADIR/translations) -examplesdir <dir> . Examples will be installed to <dir> (default PREFIX/examples) -testsdir <dir> .... Tests will be installed to <dir> (default PREFIX/tests) -hostbindir <dir> .. Host executables will be installed to <dir> (default HOSTPREFIX/bin) -hostlibdir <dir> .. Host libraries will be installed to <dir> (default HOSTPREFIX/lib) -hostdatadir <dir> . Data used by qmake will be installed to <dir> (default HOSTPREFIX) Configure options: The defaults (*) are usually acceptable. A plus (+) denotes a default value that needs to be evaluated. If the evaluation succeeds, the feature is included. Here is a short explanation of each option: -release ........... Compile and link Qt with debugging turned off. * -debug ............. Compile and link Qt with debugging turned on. + -debug-and-release . Compile and link two Qt libraries, with and without debugging turned on. -force-debug-info .. Create symbol files for release builds. -separate-debug-info Strip debug information into a separate file. -developer-build ... Compile and link Qt with Qt developer options (including auto-tests exporting) -opensource ........ Compile and link the Open-Source Edition of Qt. -commercial ........ Compile and link the Commercial Edition of Qt. -c++11 ............. Compile Qt with C++11 support enabled. -no-c++11 .......... Do not compile Qt with C++11 support enabled. -use-gold-linker ... Link using the GNU gold linker (gcc only). * -no-use-gold-linker Do not link using the GNU gold linker. -enable-new-dtags .. Use new DTAGS for RPATH (Linux only). * -disable-new-dtags . Do not use new DTAGS for RPATH. * -shared ............ Create and use shared Qt libraries. -static ............ Create and use static Qt libraries. * -static-runtime .... Statically link the C/C++ runtime library. -ltcg .............. Use Link Time Code Generation. (Release builds only) * -no-ltcg ........... Do not use Link Time Code Generation. -make <part> ....... Add part to the list of parts to be built at make time libs tools examples -nomake <part> ..... Exclude part from the list of parts to be built. -skip <module> ..... Exclude an entire module from the build. -no-compile-examples Install only the sources of examples. -no-widgets ........ Disable Qt Widgets module. -no-gui ............ Disable Qt GUI module. -no-accessibility .. Disable accessibility support. ................... Disabling accessibility is not recommended, as it will break QStyle and may break other internal parts of Qt. With this switch you create a source incompatible version of Qt, which is unsupported. * -accessibility ..... Enable accessibility support. -no-sql-<driver> ... Disable SQL <driver> entirely, by default none are turned on. -qt-sql-<driver> ... Enable a SQL <driver> in the Qt Library. -plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to at run time. Available values for <driver>: mysql psql oci odbc tds db2 + sqlite sqlite2 ibase (drivers marked with a '+' have been detected as available on this system) -system-sqlite ..... Use sqlite from the operating system. -no-opengl ......... Do not support OpenGL. -opengl <api> ...... Enable OpenGL support with specified API version. Available values for <api>: desktop - Enable support for Desktop OpenGL dynamic - Enable support for dynamically loaded OpenGL (either desktop or ES) * es2 - Enable support for OpenGL ES 2.0 * -no-openvg ......... Disables OpenVG functionality. -openvg ............ Enables OpenVG functionality. -force-asserts ..... Activate asserts in release mode. -platform <spec> ... The operating system and compiler you are building on. (default %QMAKESPEC%) -xplatform <spec> .. The operating system and compiler you are cross compiling to. See the README file for a list of supported operating systems and compilers. -target ............ Set target OS version. Currently the only valid value is 'xp' for targeting Windows XP. MSVC >= 2012 targets Windows Vista by default. -sysroot <dir> ..... Sets <dir> as the target compiler's and qmake's sysroot and also sets pkg-config paths. -no-gcc-sysroot .... When using -sysroot, it disables the passing of --sysroot to the compiler. -qconfig <local> ... Use src/corelib/global/qconfig-<local>.h rather than the default 'full'. * -no-nis ............ Do not compile NIS support. -nis ............... Compile NIS support. -no-iconv .......... Do not enable support for iconv(3). + -iconv ............. Enable support for iconv(3). + -sun-iconv ......... Enable support for iconv(3) using sun-iconv. + -gnu-iconv ......... Enable support for iconv(3) using gnu-libiconv. -no-evdev .......... Do not enable support for evdev. + -evdev ............. Enable support for evdev. -no-mtdev .......... Do not enable support for mtdev. + -mtdev ............. Enable support for mtdev. + -inotify ........... Explicitly enable Qt inotify(7) support. -no-inotify ........ Explicitly disable Qt inotify(7) support. + -eventfd ........... Enable eventfd(7) support in the UNIX event loop. -no-eventfd ........ Disable eventfd(7) support in the UNIX event loop. * -largefile ......... Enables Qt to access files larger than 4 GB. -fontconfig ........ Build with FontConfig support. * -no-fontconfig ..... Do not build with FontConfig support. -posix-ipc ......... Enable POSIX IPC. -glib .............. Compile Glib support. -sysconfdir <dir> .. Settings used by Qt programs will be looked for in <dir>. -system-proxies .... Use system network proxies by default. * -no-system-proxies . Do not use system network proxies by default. + -warnings-are-errors Make warnings be treated as errors. -no-warnings-are-errors Make warnings be treated normally. -qtnamespace <name> Wraps all Qt library code in 'namespace name {...}'. -qtlibinfix <infix> Renames all Qt* libs to Qt*<infix>. -D <define> ........ Add an explicit define to the preprocessor. -I <includepath> ... Add an explicit include path. -L <librarypath> ... Add an explicit library path. -l <libraryname> ... Add an explicit library name, residing in a librarypath. -help, -h, -? ...... Display this information. Third Party Libraries: -qt-zlib ........... Use the zlib bundled with Qt. + -system-zlib ....... Use zlib from the operating system. See http://www.gzip.org/zlib -qt-pcre ........... Use the PCRE library bundled with Qt. + -system-pcre ....... Use the PCRE library from the operating system. See http://pcre.org/ -icu ............... Use the ICU library. * -no-icu ............ Do not use the ICU library. See http://site.icu-project.org/ -no-gif ............ Do not compile GIF reading support. -no-libpng ......... Do not compile PNG support. -qt-libpng ......... Use the libpng bundled with Qt. + -system-libpng ..... Use libpng from the operating system. See http://www.libpng.org/pub/png -no-libjpeg ........ Do not compile JPEG support. -qt-libjpeg ........ Use the libjpeg bundled with Qt. + -system-libjpeg .... Use libjpeg from the operating system. See http://www.ijg.org -no-freetype ....... Do not compile in Freetype2 support. * -qt-freetype ....... Use the libfreetype bundled with Qt. -system-freetype ... Use the libfreetype provided by the system. -no-harfbuzz ....... Do not compile in HarfBuzz-NG support. * -qt-harfbuzz ....... Use HarfBuzz-NG bundled with Qt to do text shaping. It can still be disabled by setting the QT_HARFBUZZ environment variable to "old". -system-harfbuzz ... Use HarfBuzz-NG from the operating system to do text shaping. It can still be disabled by setting the QT_HARFBUZZ environment variable to "old". See http://www.harfbuzz.org + -angle ............. Use the ANGLE implementation of OpenGL ES 2.0. -no-angle .......... Do not use ANGLE. See http://code.google.com/p/angleproject/ Qt for Windows only: -no-incredibuild-xge Do not add IncrediBuild XGE distribution commands to custom build steps. + -incredibuild-xge .. Add IncrediBuild XGE distribution commands to custom build steps. This will distribute MOC and UIC steps, and other custom buildsteps which are added to the INCREDIBUILD_XGE variable. (The IncrediBuild distribution commands are only added to Visual Studio projects) * -no-plugin-manifests Do not embed manifests in plugins. -plugin-manifests .. Embed manifests in plugins. -no-qmake .......... Do not compile qmake. * -qmake ............. Compile qmake. -qreal [double|float] typedef qreal to the specified type. The default is double. Note that changing this flag affects binary compatibility. -no-rtti ........... Do not compile runtime type information. * -rtti .............. Compile runtime type information. -no-strip .......... Do not strip libraries and executables of debug info when installing. * -strip ............. Strip libraries and executables of debug info when installing. -no-sse2 ........... Do not compile with use of SSE2 instructions. + -sse2 .............. Compile with use of SSE2 instructions. -no-sse3 ........... Do not compile with use of SSE3 instructions. + -sse3 .............. Compile with use of SSE3 instructions. -no-ssse3 .......... Do not compile with use of SSSE3 instructions. + -ssse3 ............. Compile with use of SSSE3 instructions. -no-sse4.1 ......... Do not compile with use of SSE4.1 instructions. + -sse4.1 ............ Compile with use of SSE4.1 instructions. -no-sse4.2 ......... Do not compile with use of SSE4.2 instructions. + -sse4.2 ............ Compile with use of SSE4.2 instructions. -no-avx ............ Do not compile with use of AVX instructions. + -avx ............... Compile with use of AVX instructions. -no-avx2 ........... Do not compile with use of AVX2 instructions. + -avx2 .............. Compile with use of AVX2 instructions. -no-ssl ............ Do not compile support for SSL. + -ssl ............... Enable run-time SSL support. -no-openssl ........ Do not compile support for OpenSSL. + -openssl ........... Enable run-time OpenSSL support. -openssl-linked .... Enable linked OpenSSL support. -no-libproxy ....... Do not compile in libproxy support. + -libproxy .......... Compile in libproxy support (for cross compilation targets). -no-dbus ........... Do not compile in D-Bus support. + -dbus .............. Compile in D-Bus support and load libdbus-1 dynamically. -dbus-linked ....... Compile in D-Bus support and link to libdbus-1. -no-audio-backend .. Do not compile in the platform audio backend into Qt Multimedia. + -audio-backend ..... Compile in the platform audio backend into Qt Multimedia. -no-wmf-backend .... Do not compile in the windows media foundation backend into Qt Multimedia. + -wmf-backend ....... Compile in the windows media foundation backend into Qt Multimedia. -no-qml-debug ...... Do not build the in-process QML debugging support. * -qml-debug ......... Build the in-process QML debugging support. * -no-directwrite .... Do not build support for DirectWrite font rendering. -directwrite ....... Build support for DirectWrite font rendering (requires DirectWrite availability on target systems, e.g. Windows Vista with Platform Update, Windows 7, etc.) * -no-direct2d ....... Do not build the Direct2D platform plugin. -direct2d .......... Build the Direct2D platform plugin (experimental, requires Direct2D availability on target systems, e.g. Windows 7 with Platform Update, Windows 8, etc.) -no-style-<style> .. Disable <style> entirely. -qt-style-<style> .. Enable <style> in the Qt Library. Available styles: * windows + windowsxp + windowsvista * fusion windowsce windowsmobile -no-native-gestures Do not use native gestures on Windows 7. * -native-gestures ... Use native gestures on Windows 7. * -no-mp ............. Do not use multiple processors for compiling with MSVC -mp ................ Use multiple processors for compiling with MSVC (-MP). -loadconfig <config> Run configure with the parameters from file configure_ <config>.cache. -saveconfig <config> Run configure and save the parameters in file configure_<config>.cache. -redo .............. Run configure with the same parameters as last time. Qt for Windows CE only: * -no-crt ............ Do not add the C runtime to default deployment rules. -qt-crt ............ Qt identifies C runtime during project generation. -crt <path> ........ Specify path to C runtime used for project generation. -no-cetest ......... Do not compile Windows CE remote test application. + -cetest ............ Compile Windows CE remote test application. -signature <file> .. Use <file> for signing the target project. X:\Qt\qt-everywhere-opensource-src-5.5.1>
Copyright Notice: This article is exclusive original manuscripts, copyrighted by Happy Digits Software , shall not be reproduced without permission.
Table of contents
Previous topic
Next topic
Quick search