/************************************************************************************/
qt最新发布了4.7.4版本,但是官方网站上仅提供vs2008下的安装包,如果直接下载已经编译好
的二进制文件,想在vs2010上运行,我试了下,没能成功。因此痛下决心用vs2010来编译qt。(机
器不行,估计得10小时以上)
既然QT都使用了自己的编译版本,那么QT Creator 也是要编译一下的,就不要使用它QT已经编
译好的版本。对于QT下使用的一些工具(jom),也最好自己编译后再使用,我的使用环境是
Windows 7 32位,VS2010 中文旗舰版。(最好使用英文版)
QT作为linux下开发的系统,虽然现在也在兼容windows,但是也有一些问题,在编译过程中碰到
的最大的问题是目录名的问题,QT本身不支持汉语目录名和带空格的目录名,就算源程序和编译目录
满足这个条件,然而QT在编译过程中,会大量使用TEMP文件,Window 7系统的TEMP目录
在C:/Users/[用户名]/AppData/Local/Temp下,如果当前用户是中文的名,在QT编译过程中就是致命
的。最好的解决办法就是吧window的TEMP目录设置在根目录下我就是设置在C:/TEMP 。(Windows下
设置用户的环境变量,把里面的TEMP 和TMP 全部设置成C:/TEMP)
/************************************************************************************/
QT编译过程会使用比较大的硬盘空间,大约占有5-6G。
1.先安装好vs2010,然后去qt网站上下载qt-everywhere-opensource-src-4.7.4.zip 解压到相应
磁盘目录(我的是E:),然后发现有个叫qt-everywhere-opensource-src-4.7.4的文件夹,修改
文件夹名字为qt,此时我的qt安装根目录是e:\qt
2.在开始栏中找到visual studio的工具visual studio命令提示符(2010)。我编译机器是32位的
所以,就只用最下面那个visual studio命令提示符(2010)。双击该程序
试着 cd e:\qt
在e:\qt下输入 configure -platform win32-msvc2010
-debug-and-release -nomake examples -nomake demos
后根据提示按o(开源协议),y(开始)
等待configure完成。
说明:你可以输入configure -help事先查看说明
-prefix 指定的就是安装目录
-platform 选择编译平台
-shared -static 就是选择编译静态版
-debug-and-release 编译目标 这个是 debug 和 release都编译
-no-qt3support 虽然新开发QT的不会使用到QT3,一般情况下还是选上吧,因为难
免有些需要编译的QT工具需要它。
其它的选项就是选择编译什么QT安装包
-nomake examples -nomake docs -nomake demos 就是是不是编译文档 和 例子,
编译例子的时间很长,一般可以不编译。
如果编译过程需要使用第三方的包,可以用 -I 和-L 来增加。
3.运行完configure后运行nmake
这里可以不使用nmake来编译,使用jom.exe,这是一个替代nmake的工具能够利用多核CPU的资源
来并行编译,能缩短编译时间jom -j 2 即可 2 表示2核下面是地址http://qt.gitorious.org/qt-
labs/jom。具体使用请查询网页。但是我没有尝试这个jom,老老实实的用nmake来经行编译。
configure在我的机器上需要10分钟左右,然后键入nmake,你就开始了漫长的nmake过程了,如果
是重新安装的系统后安装的上述程序,不出意外可以先睡上6个小时后,就应该编译完成了。但中途可
能出现一些情况需要您的处理。
1)编译大概1个小时之后,出现:
01.api/qscriptextensionplugin.h(43): Error: Undefined interface
02.NMAKE : fatal error U1077: 'C:/Qt/2009.05/qt/bin/moc.exe' : return code
'0x1'
03.Stop.
04.NMAKE : fatal error U1077: '"d:/Program Files/Microsoft Visual Studio
9.0/VC/BIN
05./nmake.exe"' : return code '0x2'
06.Stop.
07.NMAKE : fatal error U1077: 'cd' : return code '0x2'
08.Stop.
api/qscriptextensionplugin.h(43): Error: Undefined interface
NMAKE : fatal error U1077: 'C:/Qt/2009.05/qt/bin/moc.exe' : return code
'0x1' Stop.
NMAKE : fatal error U1077: '"d:/Program Files/Microsoft Visual Studio 9.0
/VC/BIN
/nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
以上是出错代码,解决方法是将
qt/src/script/tmp/moc/debug_shared/mocinclude.tmp
qt/src/script/tmp/moc/release_shared/mocinclude.tmp
删除,然后继续编译。输入nmake即可。
2)过了很长时间之后,在编译webkit部分的代码时,会发生错误,系统会停止编译
D:/tools/Qt/2010.05/qt/src/3rdparty/webkit/WebCore/tmp/moc/debug_shared/moc_Sock
etStreamHandlePrivate.cpp(97) : error C2065: “QSslError”: 未声明的标识符
D:/tools/Qt/2010.05/qt/src/3rdparty/webkit/WebCore/tmp/moc/debug_shared/moc_Sock
etStreamHandlePrivate.cpp(97) : error C3861: “socketSslErrors”: 找不到标识符
正在生成代码...
NMAKE : fatal error U1077: “"D:/tools/Microsoft Visual Studio 10.0/VC/BIN/cl.EX
E"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “"D:/tools/Microsoft Visual Studio 10.0/VC/BIN/nmake
.exe"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “cd”: 返回代码“0x2”
Stop.
解决方法是将
qt/src/3rdparty/webkit/WebCore/tmp/moc/debug_shared/mocinclude.tmp
qt/src/3rdparty/webkit/WebCore/tmp/moc/release_shared/mocinclude.tmp
删除之后可以继续编译(重新执行nmake命令)
4.接着运行nmake install(在E:\qt下)
如果出现 找不到 win32-msvc2010,把qt-everywhere-opensource-src-4.7.1/mkspecs
目录拷贝的安装目录就可以了。
几分钟后,就安装完毕。
然后需要在清理前,切记把 qmake.cache(您的安装根目录下)和configure.cache(您的安
装根目录下)备份到别的地方,然后nmake clean 腾出空间。
最后再把 qmake.cache和configure.cache 复制回远处。如果不这样,安装 qt-vs-addin
后进行 Qt Versions 添加路径时将失败。
5.现在编译就算结束了。
最后就是在win7上面添加环境变量了。桌面->计算机(右击)->属性->高级系统设置->环境变量->
Path记录。添加上:
%QTDIR%/bin ;%QTDIR%/lib;%QTDIR%/include
当然你也可以直接添加上绝对路径
6.添加上qt-vs-addin后进行Qt Versions添加路径。
7.建议安装Visual Assist,你可以从网络上下载安装。
8.win7 64位系统请先安装微软的补丁
http://code.msdn.microsoft.com/KB2280741/Release/ProjectReleases.aspx?ReleaseId=4974
后在编译