Posted on 2007-06-26 14:22
chemz 阅读(6181)
评论(8) 编辑 收藏 引用 所属分类:
C++
Qt3.3.8编译记录
Qt3.3.8是Qt3系列中的最后一个版本,后续已经不再有更新版本了,虽然目前Qt4系列
的版本已经发布了Qt4.3.0版,但是基本上来说大多数的开发者还是处于Qt3的系列,同时也
因为在非Windows环境下(如:Linux、Unix等)大部分默认提供的Qt还是基于Qt3的版本,我
个人原来主要采用Qt3.3.4版本作为主要的开发版本,而在Qt3.3.8版以前的Qt3并没有提供针
对msvc2005的编译配置,所以基本上来讲很难在2005环境下使用Qt3(虽然我采用msvc2003和
2005联合编译成功了Qt3,但还是很麻烦的)。这里专门介绍一下Qt3.3.8版在msvc2005下的
编译过程,以避免出现错误。
1. 安装Qt3.3.8的commercial版本的源代码
不象Qt4那样没有提供安装程序,Qt3还是有一个比较方便的安装程序的。在安装的过程中
需要注意的就是有如下几点:
1.1. 必须要开启一个console窗口,并将msvc2005的环境脚本vcvarsall.bat在该console
中运行以设置好环境变量,然后才能在该console窗口中运行安装程序,如果仅仅
通过双击运行安装程序会导致很多环境变量没有设置并且无法自动识别目前的msvc
的版本,这样一来安装后的Qt的环境变量是不完整的;
1.2. 在选择安装目录的配置页面中,选择跳过所有的构建过程,如果不选择会在安装后
自动进行源代码的编译构建,而这样出来的库基本上是不符合开发需要的;
1.3. 运行安装程序后在Wizard的配置页面中,必须选者debug版本,否则会导致无法生成
调试版本而影响开发调试;同时在配置页面的高级标签选项下可以更具需要进行具
体的细节配置,但一般情况下RTTI和exception时必须要选择的,否则无法使用C++
的运行时和异常处理机制。
1.4. 安装成功后,最好检查一下在系统的环境变量中是否已经成功地配置了Qt需要的变
量,主要有三个地方需要注意:QTDIR是否正确的设置成了安装路径
(如:d:\Qt\3.3.8)、QMAKESPEC是否正确的设置成了win32-msvc2005,最后PATH
变量中是否正确的包含了Qt的bin路径(如:d:\Qt\3.3.8\bin)。
2. 配置整个Qt工程
在console窗口中进入到安装目录下(如:d:\Qt\3.3.8),首先必须完成配置过程以便
生成需要的msvc2005的工程文件,键入如下的命令即可:
configure -redo
这样一来会自动地生成所需要的工程文件、Makefile和qmake程序,但并没有进行任何库
的构建;
3. 编译Qt库
运行msvc2005开发环境,打开$(QTDIR)\src目录下的qt-mt.vcproj工程并保存已形成
一个解决方案qt-mt.sln,然后在该解决方案中加入相同目录下的qtmain.vcproj工程。
此时qt-mt和qtmain的项目配置是不可用的,需要进行很多的调整,下面分别就debug/release
两个版本进行说明:
3.1. debug版
将“常规”选项中的“中间目录”设置成为:“tmp\obj\debug_mt_shared\”;
将“C/C++”选项下的“输出文件”选项中的“ASM列表位置”和“对象文件名”设置成为:
“tmp\obj\release_mt_shared”;
将“链接器”选项下的“常规”选项中的“输出文件”设置成为:“$(QTDIR)\lib\qt-mtd338.dll”;
将“链接器”选项下的“调试”选项中的“生成程序数据库文件”设置成为:“$(QTDIR)\lib\qt-mtd338.pdb”;
将“链接器”选项下的“高级”选项中的“导入库”设置成为:“$(QTDIR)\lib\qt-mtd338.lib”。
3.2. release版
将“常规”选项中的“中间目录”设置成为:“tmp\obj\release_mt_shared\”;
将“C/C++”选项下的“优化”选项中的“优化”设置成为:“最小化大小(/O1)”;
将“C/C++”选项下的“预处理器”选项中的“预处理器定义”中添加:QT_NO_DEBUG;
将“C/C++”选项下的“代码生成”选项中的“运行时库”设置成为:“多线程DLL(/MD)”;
将“C/C++”选项下的“输出文件”选项中的“ASM列表位置”和“对象文件名”设置成为:
“tmp\obj\release_mt_shared”;
将“链接器”选项下的“常规”选项中的“输出文件”设置成为:“$(QTDIR)\lib\qt-mt338.dll";
将“链接器”选项下的“输入”选项中的“延迟加载的DLL”设置成为:
“opengl32.dll;comdlg32.dll;oleaut32.dll;winmm.dll;wsock32.dll;winspool.dll”;
将“链接器”选项下的“调试”选项中的“生成调试信息”设置成为:“是(/DEBUG)”;
将“链接器”选项下的“调试”选项中的“生成程序数据库文件”设置成为:“$(QTDIR)\lib\qt-mt338.pdb”;
将“链接器”选项下的“高级”选项中的“导入库”设置成为:“$(QTDIR)\lib\qt-mt338.lib”。
对于qtmain工程也需要做对应的配置:
3.3. debug版
将“常规”选项中的“中间目录”设置成为:“tmp\obj\debug_mt_shared\”;
将“C/C++”选项下的“输出文件”选项中的“ASM列表位置”和“对象文件名”设置成为:
“tmp\obj\release_mt_shared”;
将“管理员”选项下的“常规”选项中的“输出文件”设置成为:“$(QTDIR)\lib\qtmaind.lib”;
3.4. release版
将“常规”选项中的“中间目录”设置成为:“tmp\obj\release_mt_shared\”;
将“C/C++”选项下的“优化”选项中的“优化”设置成为:“最小化大小(/O1)”;
将“C/C++”选项下的“预处理器”选项中的“预处理器定义”中添加:QT_NO_DEBUG;
将“C/C++”选项下的“代码生成”选项中的“运行时库”设置成为:“多线程DLL(/MD)”;
将“C/C++”选项下的“输出文件”选项中的“ASM列表位置”和“对象文件名”设置成为:
“tmp\obj\release_mt_shared”;
将“管理员”选项下的“常规”选项中的“输出文件”设置成为:“$(QTDIR)\lib\qtmain.lib”;
完成了上述所有的配置后就要以进行编译了,通过msvc2005的批生成完成所有工程所有
版本的编译,编译成功后会在$(QTDIR)\lib目录下包含*.lib和*.dll同时在$(QTDIR)\bin
目录下包含*.dll文件;
4. 编译支持工具集
上面仅仅编译了Qt的库,对于开发使用的各种开发工具(如:designer、assistant等)
还需要进行编译。同样在前面的console窗口中进入到$(QTDIR)\tools目录下运行如下的
命令行:
nmake
这样就可以进行编译了,至于Qt的例子工程可以考虑在需要哪一个例子的时候单独的进
行编译。
注:配置中的引号是不能够输入的,只能输入引号里面的内容。