在 Windows 7 编译 Qt 4.8 源代码的详细过程 步骤详解
Following compilation process is suitable only for Qt 4.8 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 下载的源代码可能无法使用,因为经常修改可能不稳定。
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-vs2008-4.8.7.exe (或带 qmake 的其它 *.EXE 二进制发行版),位置 X:\Qt\Qt4.8.7
把 C:\Windows;C:\Windows\System32; 和 X:\Qt\Qt4.8.7\4.8\msvc2008\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
Download Rubyinstaller-2.3.3-x64.exe --> Install Rubyinstaller-2.3.3-x64.exe (Required when compiling qtwebkit)
位置 X:\Ruby23-x64 --> 勾选 Add Ruby executables to your PATH 环境变量 --> 把 X:\Ruby23-x64\bin\;F:\Ruby23-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 环境变量
qtwebkit 编译设置。
控制面板 --> 时间、语言和区域 --> 区域 --> 更改位置 --> 管理 --> 更改系统区域设置 --> 英语(美国)--> 确定 --> 重启
解压 qt-everywhere-opensource-src-4.8.7.zip 到 X:\Qt\qt-everywhere-opensource-src-4.8.7 目录下
使用 Data Compare 工具, 比对 qt-opensource-windows-x86-vs2010-4.8.7.exe 安装包自带源码 (查看源码是否差异太大, 是否存在问题)
调用 Visual Studio x64 Win64 Command Prompt (2010) (如有更新环境变量, 需重启此窗口) --> X: --> cd .\Qt\qt-everywhere-opensource-src-4.8.7
configure -confirm-license -opensource -platform win32-msvc2010 -release -mp -prefix "X:\Qt\Qt4.8.7_x64_custom\4.8\msvc2010_64" -opengl desktop -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-sql-sqlite -plugin-sql-sqlite -largefile -no-qt3support -nomake tests -nomake examples -no-webkit -openssl -I X:\OpenSSL-Win64\include -L X:\OpenSSL-Win64\lib
编译并将结果拷贝到 X:\Qt\Qt4.8.7_x64_custom 目录下
jom --> jom install 或 nmake --> nmake install
把 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
到 http://www.sqlite.org/download.html 下载 sqlite-amalgamation-3190300.zip 源代码 --> 解压到 X:\sqlite3 目录下 --> 把 X:\Qt\Qt4.8.7\4.8\msvc2008\bin\; 改为 X:\Qt\Qt4.8.7_x64_custom\4.8\msvc2010_64\bin\; 添加到 path 环境变量
到 http://mirrors.ustc.edu.cn/kde/stable 下载 qtwebkit-2.3.4.tar.gz 源代码 --> 解压到 X:\qtwebkit-2.3.4 目录下 --> Visual Studio x64 Win64 Command Prompt (2010) --> X: --> cd .cd .\qtwebkit-2.3.4 --> set SQLITE3SRCDIR=X:\sqlite3 --> set QTDIR=X:\Qt\Qt4.8.7_x64_custom\4.8\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\Qt4.8.7_x64_custom\4.8\msvc2010_64\lib\; 添加到 path 环境变量 --> 双击运行 X:\qtwebkit-2.3.4\WebKitBuild\Release\bin\QtTestBrowser.exe
Qt4.8.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
Qt4.8.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 4.8.7 in the CMD window, configure -help output information.
X:\Qt\qt-everywhere-opensource-src-4.8.7>configure -help Found more than one known compiler! Using "Microsoft (R) 32-bit C/C++ Optimizing Compiler.NET 2015 (14.0)" Unable to detect the platform from environment. Use -platform command lineargument or set the QMAKESPEC environment variable and run configure again See the README file for a list of supported operating systems and compilers. Usage: configure [-buildkey <key>] [-release] [-debug] [-debug-and-release] [-shared] [-static] [-no-fast] [-fast] [-no-exceptions] [-exceptions] [-no-accessibility] [-accessibility] [-no-rtti] [-rtti] [-no-stl] [-stl] [-no-sql-<driver>] [-qt-sql-<driver>] [-plugin-sql-<driver>] [-system-sqlite] [-arch <arch>] [-D <define>] [-I <includepath>] [-L <librarypath>] [-help] [-no-dsp] [-dsp] [-no-vcproj] [-vcproj] [-no-qmake] [-qmake] [-dont-process] [-process] [-no-style-<style>] [-qt-style-<style>] [-redo] [-saveconfig <config>] [-loadconfig <config>] [-qt-zlib] [-system-zlib] [-no-gif] [-no-libpng] [-qt-libpng] [-system-libpng] [-no-libtiff] [-qt-libtiff] [-system-libtiff] [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg] [-no-libmng] [-qt-libmng] [-system-libmng] [-no-qt3support] [-mmx] [-no-mmx] [-3dnow] [-no-3dnow] [-sse] [-no-sse] [-sse2] [-no-sse2] [-no-iwmmxt] [-iwmmxt] [-openssl] [-openssl-linked] [-no-openssl] [-no-dbus] [-dbus] [-dbus-linked] [-platform <spec>] [-qtnamespace <namespace>] [-qtlibinfix <infix>] [-no-phonon] [-phonon] [-no-phonon-backend] [-phonon-backend] [-no-multimedia] [-multimedia] [-no-audio-backend] [-audio-backend] [-no-script] [-script] [-no-scripttools] [-scripttools] [-no-webkit] [-webkit] [-webkit-debug] [-graphicssystem raster|opengl|openvg] [-no-directwrite] [-directwrite] [-no-nis] [-nis] [-qpa] [-no-cups] [-cups] [-no-iconv] [-iconv] [-sun-iconv] [-gnu-iconv] [-neon] [-no-neon] [-largefile] [-little-endian] [-big-endian] [-font-config] [-no-fontconfig] [-posix-ipc] Installation options: You may use these options to turn on strict plugin loading: -buildkey <key> .... Build the Qt library and plugins using the specified <key>. When the library loads plugins, it will only load those that have a matching <key>. 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. -opensource ........ Compile and link the Open-Source Edition of Qt. -commercial ........ Compile and link the Commercial Edition of Qt. -developer-build ... Compile and link Qt with Qt developer options (including auto-tests exporting) * -shared ............ Create and use shared Qt libraries. -static ............ Create and use static Qt libraries. -ltcg .............. Use Link Time Code Generation. (Release builds only) * -no-ltcg ........... Do not use Link Time Code Generation. * -no-fast ........... Configure Qt normally by generating Makefiles for all project files. -fast .............. Configure Qt quickly by generating Makefiles only for library and subdirectory targets. All other Makefiles are created as wrappers which will in turn run qmake -no-exceptions ..... Disable exceptions on platforms that support it. * -exceptions ........ Enable exceptions on platforms that support it. -no-accessibility .. Do not compile Windows Active Accessibility support. * -accessibility ..... Compile Windows Active Accessibility support. -no-stl ............ Do not compile STL support. * -stl ............... Compile STL 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-qt3support ..... Disables the Qt 3 support functionality. -no-opengl ......... Disables OpenGL functionality -opengl <api> ...... Enable OpenGL support with specified API version. Available values for <api>: * desktop - Enable support for Desktop OpenGL es1 - Enable support for OpenGL ES Common Profile es2 - Enable support for OpenGL ES 2.0 * -no-openvg ......... Disables OpenVG functionality -openvg ............ Enables OpenVG functionality Requires EGL support, typically supplied by an OpenGL or other graphics implementation -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. * -no-nis ............ Do not build NIS support. -nis ............... Build NIS support. -qpa ............... Enable the QPA build. QPA is a window system agnostic implementation of Qt. -neon .............. Enable the use of NEON instructions. * -no-neon ........... Do not enable the use of NEON instructions. -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 -inotify ........... Enable Qt inotify(7) support. * -no-inotify ........ Disable Qt inotify(7) support. * -largefile ......... Enables Qt to access files larger than 4 GB. * -little-endian ..... Target platform is little endian (LSB first). -big-endian ........ Target platform is big endian (MSB first). -fontconfig ........ Build with FontConfig support. * -no-fontconfig ..... Do not build with FontConfig support. -posix-ipc ......... Enable POSIX IPC. -system-proxies .... Use system network proxies by default. * -no-system-proxies . Do not use system network proxies by default. -qtnamespace <namespace> 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. -graphicssystem <sys> Specify which graphicssystem should be used. Available values for <sys>: * raster - Software rasterizer opengl - Using OpenGL acceleration, experimental! openvg - Using OpenVG acceleration, experimental! -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 -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-libmng ......... Do not compile MNG support. -qt-libmng ......... Use the libmng bundled with Qt. + -system-libmng ..... Use libmng from the operating system. See See http://www.libmng.com -no-libtiff ........ Do not compile TIFF support. -qt-libtiff ........ Use the libtiff bundled with Qt. + -system-libtiff .... Use libtiff from the operating system. See http://www.libtiff.org -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 Qt for Windows only: -no-dsp ............ Do not generate VC++ .dsp files. * -dsp ............... Generate VC++ .dsp files, only if spec "win32-msvc". -no-vcproj ......... Do not generate VC++ .vcproj files. * -vcproj ............ Generate VC++ .vcproj files, only if platform "win32-msvc.net". -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. -dont-process ...... Do not generate Makefiles/Project files. This will override -no-fast if specified. * -process ........... Generate Makefiles/Project files. -no-rtti ........... Do not compile runtime type information. * -rtti .............. Compile runtime type information. -no-mmx ............ Do not compile with use of MMX instructions + -mmx ............... Compile with use of MMX instructions -no-3dnow .......... Do not compile with use of 3DNOW instructions + -3dnow ............. Compile with use of 3DNOW instructions -no-sse ............ Do not compile with use of SSE instructions + -sse ............... Compile with use of SSE instructions -no-sse2 ........... Do not compile with use of SSE2 instructions + -sse2 .............. Compile with use of SSE2 instructions -no-openssl ........ Do not compile in OpenSSL support + -openssl ........... Compile in run-time OpenSSL support -openssl-linked .... Compile in linked OpenSSL support -no-dbus ........... Do not compile in D-Bus support + -dbus .............. Compile in D-Bus support and load libdbus-1 dynamicall y -dbus-linked ....... Compile in D-Bus support and link to libdbus-1 -no-phonon ......... Do not compile in the Phonon module + -phonon ............ Compile the Phonon module (Phonon is built if a decent C++ compiler is used.) -no-phonon-backend . Do not compile the platform-specific Phonon backend-pl ugin * -phonon-backend .... Compile in the platform-specific Phonon backend-plugin -no-multimedia ..... Do not compile the multimedia module * -multimedia ........ Compile in multimedia module -no-audio-backend .. Do not compile in the platform audio backend into QtMu ltimedia + -audio-backend ..... Compile in the platform audio backend into QtMultimedi a -no-webkit ......... Do not compile in the WebKit module + -webkit ............ Compile in the WebKit module (WebKit is built if a decent C++ compiler is used.) -webkit-debug ...... Compile in the WebKit module with debug symbols. -no-script ......... Do not build the QtScript module. + -script ............ Build the QtScript module. -no-scripttools .... Do not build the QtScriptTools module. + -scripttools ....... Build the QtScriptTools module. -no-declarative .... Do not build the declarative module + -declarative ....... Build the declarative module -no-declarative-debug Do not build the declarative debugging support * -declarative-debug . Build the declarative debugging support * -no-directwrite .... Do not build support for DirectWrite font rendering -directwrite ....... Build support for DirectWrite font rendering (experimental, requires DirectWrite availability on target systems, e.g. Windows Vista with Platform Update, Windows 7, etc.) -arch <arch> ....... Specify an architecture. Available values for <arch>: * windows windowsce symbian boundschecker generic -no-style-<style> .. Disable <style> entirely. -qt-style-<style> .. Enable <style> in the Qt Library. Available styles: * windows + windowsxp + windowsvista * plastique * cleanlooks * motif * cde windowsce windowsmobile s60 -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-iwmmxt ......... Do not compile with use of IWMMXT instructions + -iwmmxt ............ Do compile with use of IWMMXT instructions (Qt for Windows CE on Arm 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 * -phonon-wince-ds9 .. Enable Phonon Direct Show 9 backend for Windows CE Qt for Symbian OS only: * -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. -fpu <flags> ....... VFP type on ARM, supported options: softvfp(default) | vfpv2 | softvfp+vfpv2 -no-s60 ............ Do not compile in S60 support. * -s60 ............... Compile with support for the S60 UI Framework -no-usedeffiles .... Disable the usage of DEF files. -usedeffiles ....... Enable the usage of DEF files. X:\Qt\qt-everywhere-opensource-src-4.8.7>
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