安装过 VS2012 之后发现官方并没有提供针对 VS2012 的预编译 Qt 4,所以我们必须要自己使用 VS2012 编译 Qt 4。Qt 4 的最新版是 4.8.4,这也是我们推荐的版本。按照官方的说法,这一版本已经能够使用 VS2012 进行编译。此处记下编译步骤:
首先准备必须的工具:
- 下载 Qt 4.8.4 源代码:http://releases.qt-project.org/qt4/source/qt-everywhere-opensource-src-4.8.4.zip
- 下载 Perl:http://www.strawberryperl.com/
- 下载 JOM:http://releases.qt-project.org/jom/jom.zip
准备好上述工具之后,我们就可以进行编译工作了:
安装前面我们下载完成的 Perl。
将 Qt 源代码解压,比如这里我们将其解压到 C:\Qt。
Qt 4.8.4 的 webkit 代码有一些问题,这里我们必须首先对其进行修改:
将 C:\Qt\src\3rdparty\webkit\Source\JavaScriptCore\wtf\HashSet.h 文件使用这里提供的 HashSet.h 进行替换;
将 C:\Qt\src\3rdparty\webkit\Source\WebCore\platform\DefaultLocalizationStrategy.cpp 文件的第 327 行修改为:
return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
我们修改的主要内容是将 Look Up 一句后面的双引号替换为转义字符。
将 JOM 解压到 C:\Qt\JOM。
在系统环境变量中添加两个新的变量:
- QTDIR=C:\Qt\
- QMAKESPEC=win32-msvc2012
在系统环境变量 Path 的最后增加一个 ;,然后加上 %QTDIR%\bin。
打开 VS2012 的本地工具命令行,进入 C:\Qt 目录。
输入下面命令并回车:
configure -opensource -platform win32-msvc2012
然后输入:
jom\jom.exe -j n
注意,这里的 n 表示你的 CPU 的核数。例如,豆子的笔记本 CPU 是 i5 双核四线程,因此输入的是
jom\jom.exe -j 4
接下来便是漫长的等待,这个过程大约会持续 5 - 6 个小时,建议晚上睡觉前开始编译,第二天一早就可以得到结果了。
最后,如果编译没有错误,我们执行
nmake install
完成安装。
至此,我们就使用 VS2012 编译完成 Qt 4.8.4。
5 评论
诺记那边好像无法下载jom了,博主更新一下链接吧,我用的是http://releases.qt-project.org/jom/jom.zip
已经修改过了哦~多谢提醒!
抱歉博主,占用地方写个编译中我遇到的问题和解决方法
fatal error LNK1210: 已超过内部ILK大小限制;链接时使用 /INCREMENTAL:NO
(fatal error LNK1210: exceeded internal ILK size limit; link with
/INCREMENTAL:NO)
mkspecs\win32-msvc2012\qmake.conf第61行
原本为: QMAKE_LFLAGS_DEBUG = /DEBUG
改为: QMAKE_LFLAGS_DEBUG = /DEBUG /INCREMENTAL:NO
参考: https://bugs.webkit.org/show_bug.cgi?id=41930
http://trac.webkit.org/changeset/74409
多谢指出!我倒是很幸运地没有遇到任何错误
编译演示程序browser 时,运行会崩溃。可能qtwebkit存在问题