原文:http://hi.baidu.com/fairysky/blog/item/883cd1b474c33c7b8bd4b219.html
最新的QT4.5发布了,增加了LGPL2.1协议,实在是众望所归啊。。。
参考资料:
1、 【转贴】VC 2005 下如何编译安装并开发 QT 4.4.0 应用程序
2、 qt4:qt编译安装信息的解读
3、 qt4:windows下编译qt 4.3.2
4、 网友已编译好的Qt开源版下载(含Debug库) (主要是参考它的configure参数)
还有QT安装目录下的“ install ”文件
一、下载QT4.5(本文仅讨论LGPL/Free Downloads)
下载地址:http://download.qtsoftware.com/qt/source/qt-win-opensource-src-4.5.0.zip
解压,假定解压到E:\qt-win-opensource-src-4.5.0 (解压路径不要包含空白,另外也建议不要包含中文名称),解压后目录层次:
二、设置环境变量
set QTDIR=E:\qt-win-opensource-src-4.5.0
set path=%path%;%QTDIR%\bin
方法:
“我的电脑”->“属性”->“高级”->“环境变量”,弹出一个对话框,
然后“xxx的用户变量”->“新建”,弹出一个输入对话框,输入:
“变量名” --- QTDIR
“变量值” --- E:\qt-win-opensource-src-4.5.0
同上,修改path环境变量方法:
在“xxx的用户变量”中选择“PATH”,然后“编辑”,在“变量值”的最后输入“ ;%QTDIR%\bin ”(不带引号,注意有一个分号)
三、编译QT
1、在命令行设置好vc编译器环境变量(我是通过一个简单的批处理文件来设置好vc编译器的环境变量)
1 @echooff
2 call"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86
3
4 rem 在这里,调用sqlite3的环境变量设置批处理是因为在后来qt编译时要用到sqlite,qt需要知道sqlite的include和lib以及dll的位置
5 call"D:\环境变量批处理设置\sqlite3环境变量.bat"
过程我就不多说了(如果有不明白的,可以留言;我个人认为尽管在windows下有VS IDE,但是作为一个编程人员,掌握基本的命令行编译知识应该是一个基本的技能)
如果设置好了vc编译器环境变量,运行" cl/? " (不包括引号),如果输出了cl.exe帮助说明信息,则表示vc编译器环境变量设置成功。
可以通过" set path "," set include "," set lib " 命令查看path、include、lib环境变量
2、配置QT(configure)
在命令行设置好vc编译器环境变量之后,进入到QT解压目录(%QTDIR%),然后输入" configure/? "(configure位于%QTDIR%目录下),查看configure的帮助。
下面是我的configure配置参数:
1、编译shared版(默认编译为shared版,不需要设置),并且编译debug和release两个版本(-debug-release)
2、使用vc2008(包括express版)(-platform win32-msvc2008)
3、使用qt自带的zlib、gif、libpng、libmng、libtiff、libjpeg (
-qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg
)
4、编译数据库插件支持sqlite、odbc(需要相应的C/C++头文件和库的支持)(
-plugin-sql-sqlite -plugin-sql-odbc
)
5、不支持qt3 (-no-qt3support)
其中第4条,我们已经在
vc编译器环境变量设置.bat
进行了设置,通过
call
"D:\环境变量批处理设置\sqlite3环境变量.bat"
设置了sqlite的include和lib以及dll的搜索路径(dll搜索路径设置在path环境变量中)
附加
6、无mmx指令集支持 (-no-mmx)
7、无3dnow指令集支持 (-no-3dnow)
8、无sse和sse2指令集支持 (-no-sse -no-sse2)
9、无direct3d支持(我用不上direct3d,默认不编译direct3d)
10、无openssl支持 (-no-openssl)
11、无dbus支持(dbus是一个类似于IPC的实现,不过我好像用不上) (-no-dbus)
12、无phonon支持以及phonon向后兼容性支持(phonon是一个基于kde的多媒体支持,
并且主要是用于那些比较古老的编译器,在我的机器上不需要) (-no-phonon -no-phonon-backend)
13、不编译webkit模块(类似于浏览器的东西,我个人不需要) (-no-webkit)
14、不支持脚本工具scripttools (-no-scripttools)
生成工程文件相关
15、无生成sln以及vcproj文件(生成的sln文件好像不好使,不能用vc2008打开),只生成makefile文件 (-no-dsp -no-vcproj)
上述只是我个人的需求,大家可以根据自己的需要进行调整(我这么做只是为了尽可能的缩短编译时间)
configure -debug-and-release -platform win32-msvc2008 -qt-zlib -qt-gif -qt
-libpng -qt-libmng -qt-libtiff -qt-libjpeg -plugin-sql-sqlite -plugin-sql-
odbc -no-qt3support -no-mmx -no-3dnow -no-sse -no-sse2 -no-openssl -no-dbus
-no-phonon -no-phonon-backend -no-webkit -no-scripttools -no-dsp -no-vcproj
configure大概需要执行5~10分钟,如果对configure产生的信息不清楚的话,可以看看这篇文章(qt4:qt编译安装信息的解读)
configure.exe主要是做两件事:
1)编译qmake,并将编译好的qmake.exe拷贝到bin目录下(这又是之前要添加" %QTDIR%\bin ”到path环境变量中的原因)
2)生成makefile文件(包括编译qt的makefile文件以及examples、demos、tools等的makefiles文件)
三、编译QT
在QT的解压目录下执行nmake(确保configure.exe运行成功,configure会在QT的解压目录下生成一个Makefile文件)
为了缩短编译时间,我们可以现将examples和demos目录转移(例如新建一个文件夹,然后将这2个目录移到该目录下),这样nmake在编译到examples和demos时会报错,然后退出编译过程
然后就是漫长的等待了~~~(编译的时候就去干点别的吧,运动运动)
按照我上面的操作,编译完成qt大概需要1个小时;占用硬盘2G左右;如果完整的编译qt、examples、demos),那么大概需要4~6个小时,占用硬盘10G左右
)
四、清理收尾工作
编译完成之后,要进行清理,不然那么多硬盘被占用了,太心疼了
运行" nmake confclean "(参见" install "文件),这样清理完成之后,整个qt解压目录大小约为770M左右
五、编译demos
将examples、demos目录移回原位,如果想要运行demos,可以通过命令行进入到demos目录下(保证环境变量已设置好),然后运行nmake(又是一段漫长的时间,1个小时左右)
编译demos完成之后,在qt解压目录下的bin目录中有一个" qtdemo.exe ",运行
同样地,我们也要进行清理工作,进入到demos目录(同上,要保证环境变量已设置好),运行" nmake clean "
这样我们就能看到一部分的运行示例了(为什么是部分?因为qtdemo.exe不仅仅是包含demos目录中的例子,同样也包含examples目录中的例子,如果想要查看完整的qtdemo.exe,还需要编译examples,方法同demos)
最后,将Qt路径添加到VC编译环境中。(参见
【转贴】VC 2005 下如何编译安装并开发 QT 4.4.0 应用程序
)
工具->选项->项目和解决方案->VC++目录,
在包含文件一栏添加: E:\qt-win-opensource-src-4.5.0\include\QtGui;E:\qt-win-opensource-src-4.5.0\include\QtCore;E:\qt-win-opensource-src-4.5.0\include
在库文件一栏添加E:\qt-win-opensource-src-4.5.0\lib
将QT安装路径添加到Path系统环境变量中,例如:E:\qt-win-opensource-src-4.5.0\bin(这一步可以省略,在本文的“ 二、设置环境变量 ”已经设置好了)
至此,QT和vc编译环境基本上配置完成了