在 Windows 7 编译 Qt 4.8 源代码的详细过程 步骤详解
以下编译过程仅适于 Qt 4.8 及其子版本,经测试可放心使用 (意外情况除外)。
从 Qt 官网或 国内镜像 下载源代码。
注意: 从 Qt 官网 git 下载的源代码可能无法使用,因为经常修改可能不稳定。
安装 Windows SDK 10.0.18362 (编译 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 环境变量
安装 Visual Studio 2010 Ultimate (x86) 英文版 (非英文版编译时, 某些字符由于存在兼容性问题可能出错)
位置 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 环境变量
安装 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
安装 Python 2.7.9 或以上版本 (不支持 Python 3.x,编译 qtwebkit 时需要)
位置 X:\Python27 --> 勾选 Add python.exe to Path 环境变量 --> 把 F:\Python27\;F:\Python27\Scripts\; 添加到 path 环境变量
查看版本 --> cmd --> python -v
把 C:\Perl64\bin\;C:\Perl64\lib\; 及 C:\Perl64\site\bin\;C:\Perl64\site\lib\; 添加到 path 环境变量
查看版本 --> cmd --> perl -v
下载 Rubyinstaller-2.3.3-x64.exe --> 安装 Rubyinstaller-2.3.3-x64.exe (编译 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 链接无法下载,请转至 国内镜像
注意: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 目录下
使用 数据比较 工具, 比对 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 则添加 --> 打开文件 --> 保存文件
相关工具或软件,请跳转 下载中心 。
若仍不会编译,可联系 客服 寻求帮助 (或关注乐数软件相关在线资源)。
Qt 4.8.7 在 CMD 窗口, configure -help 输出信息。
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>
版权声明: 本文为独家原创稿件,版权归 乐数软件 ,未经许可不得转载。