• 23032阅读
  • 13回复

QT4.5.2(opensource)+VC2005 express安装编译全过程详解 [复制链接]

上一主题 下一主题
离线qindq
 

只看楼主 倒序阅读 楼主  发表于: 2009-07-06
— 本帖被 XChinux 设置为精华(2009-07-30) —
由于种种原因最近看上了QT这个东东
因为有不少好处,比如跨平台.......
好处就不多说了地球人都知道

我写这个东西的目的不是夸Qt
一、是写出来给自己做个备忘录
二、是抛砖引玉
三、是给其他想选择QT的同胞做个交代:看看这个经历是不是你想要的

为什么选择VC2005 express?
在mingw版本的几天试用中发现:
g++/gdb在qtcreator环境中的表现实在令人大跌眼镜
效率低下不说,gdb经常挂起不动(官方网站也有类似反应)
穷则思变,想看看声称支持VC系统的qt表现如何
VC express是免费系统,而且安装相对小巧(相对地...)

下面分阶段交代安装过程:
1.编译调试工具下载及安装

VC2005 express下载:
http://download.microsoft.com/download/A/9/1/A91D6B2B-A798-47DF-9C7E-A97854B7DD18/VC.iso
(约473M)

VC2005 express service pack1下载:
http://www.microsoft.com/downloads/details.aspx?FamilyId=7B0B0339-613A-46E6-AB4D-080D4D4A8C4E&displaylang=en
(约44MB)

注:
以上为2005英文版,为什么这样选择呢:
因为某些地方传言qt使用中文版VC编译可能有问题。
其实,经实践确定那些问题在英文版中也存在
又由于某些地方风传qt的某些模块VC2008编译不能通过
其实,经实践确定那些问题在2005也不能通过
所以我推荐大家直接上 中文VC2008 express sp1
http://download.microsoft.com/download/3/0/2/3025eae6-2e15-4972-972a-f5b1ed248e85/VS2008ExpressWithSP1CHSX1504735.iso (约1G)

microsoft cdb调试器:
http://www.microsoft.com/whdc/devtools/debugging/installx86.Mspx
(约18MB)

具体安装过程不说了,例行公事而已。

2.MS-SDK
无论是否QT,VC编程一般少不了两样东西:

ms platform sdk
http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en
(约1.3GB)
建议不要安装example及document否则安装过程就要“等得花儿也谢了”

ms directx sdk
http://download.microsoft.com/download/3/A/5/3A53CE87-F5C9-4CE5-92E1-5E2AF4841741/DXSDK_Mar09.exe
(约500MB)
建议不要安装example

至此我们大约下载了2.5G的东东,占硬盘多少你看着办吧...

3.VC及SDK的手工配置
这个步骤主要是让c++编译器知道include,lib路径

假设上面的几个组件安装路径是这样的:
VC 2005 express:         C:\program files\Microsoft Visual Studio 8
microsoft platform sdk:  D:\MSSDK\Windows\v6.1
microsoft directx sdk:   D:\MSDSSDK
microsoft cdb:           C:\Program Files\Debugging Tools for Windows(x86)

需要配置vc的命令行界面环境和集成开发环境
A.命令行界面环境
需要修改 C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat 文件
其中的PATH,INCLUDE,LIB应该这样设置:
@set PATH=D:\MSSDK\Windows\v6.1\Bin;D:\Program Files\Microsoft Visual Studio 8\Common7\IDE;D:\Program Files\Microsoft Visual Studio 8\VC\BIN;D:\Program Files\Microsoft Visual Studio 8\Common7\Tools;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;D:\Program Files\Microsoft Visual Studio 8\VC\VCPackages;%PATH%
@set INCLUDE=D:\MSDXSDK\Include;D:\MSSDK\Windows\v6.1\Include;D:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;%INCLUDE%
@set LIB=D:\MSDXSDK\Lib;D:\MSSDK\Windows\v6.1\Lib;D:\Program Files\Microsoft Visual Studio 8\VC\LIB;D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB%

B.VC express集成开发环境中
要对tools/options中的project&solution中的vc directorys的include path和lib path进行修改



4.qt 4.5.2 sdk (opensource) 的下载安装

http://get.qtsoftware.com/qtsdk/qt-sdk-win-opensource-2009.03.exe (178MB)
既然打算用vc编译,mingw就不要装了

假定安装目录为: D:\Qt\2009.03

这个安装基本上一马平川
安装完成后执行qtCreator在里面设置调试器



5.qt编译(build)

这是最令人头痛的步骤

选择左下角:开始->Visual C++ 2005 Express Edition -> Visual Studio Tools -> Visual Studio 2005 Command Prompt
在这个dos环境下执行下列步骤

A.首先是configure.exe的执行:
这个步骤决定了你将来用什么编译器、调试器做开发

要注意
i.用vc 2005 express,你要选择-platform win32-msvc2005 参数
ii. 在vc2005/vc2008环境中qt4.5.2的webkit模块是无法编译成功的
(参见官方blog:  http://labs.trolltech.com/blogs/2009/06/25/qt-452-has-been-released/)
所以在设置configure参数时有必要-no-webkit
iii.为了节省编译时间,有必要设置参数-fast
iv.还是为了节省编译时间,你最好放弃examples和demo的编译,加上一对未公开的参数
-nomake examples -nomake demos
(讨论参见:http://lists.trolltech.com/qt-interest/2008-03/thread00809-0.html)

综合下来命令行应该是:
configure -platform win32-msvc2005 -no-webkit -opensource -fast -nomake examples -nomake demos
这个步骤时间不长大约20分钟

B.执行nmake
nmake
这个步骤大约4小时
强烈建议在此期间关闭杀毒程序的实时保护功能,因为在此期间编译过程会反复重写DLL,EXE,杀毒程序接管此类操作,造成莫名其妙的link错误。

C.为了节省磁盘空间,删除编译中间临时文件(如果不在乎硬盘空间,请忽略这个问题)
nmake clean
注意,D:\Qt\2009.03\qt\Lib\*.pdb文件会被清理掉
这个会影响debugger对QT源码的跟踪(如果你不想qt源码可以忽略这个问题)
所以我在执行"nmake clean"之前
对*.pdb做了保护
所以这个步骤实际上是这样的:
md temp
move lib\*.pdb temp
nmake clean
move temp\*.pdb lib


为了一气呵成,我把整个configure及nmake阶段做成了批处理build.ms.bat:

configure -platform win32-msvc2005 -no-webkit -opensource -fast -nomake examples -nomake demos

nmake
md temp
move lib\*.pdb temp
nmake clean
move temp\*.pdb lib

整个build过程,执行这个build.ms.bat

6.QT的编译的重新利用
因为QT的编译过程耗时太久
所以考虑一次编译多人分享
D:\Qt\2009.03\qt\Lib下的*.lib,*.dll可以作为编译成果拷贝到其他已经安装了QT下对应的目录中
在copy之前configure过程是不能省略的

另外如果你希望从D:盘换到E:盘你必须重新build Qt
否则你什么都不能做
就这个问题用户与官方开发者正在吵架
估计近期不会有太好的结果
(参见 http://lists.trolltech.com/qt-interest/2007-08/thread00835-0.html )


提示一下,vc++2008与这个过程几乎是一样的

初步使用的感觉是与vc/cdb集成的不错,debugger启动效率不错。
至此你可以开始你的QT程序旅程了......
[ 此帖被qindq在2009-07-07 09:18重新编辑 ]
离线wd007

只看该作者 1楼 发表于: 2009-07-06
不错,建议版主加精阿
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线jadesoft

只看该作者 2楼 发表于: 2009-07-06
挺好!但是Visual Studio Add-in (40 Mb)与中文vs不兼容不知道这个问题有谁能够解决?
离线qindq

只看该作者 3楼 发表于: 2009-07-07
引用第2楼jadesoft于2009-07-06 23:11发表的  :
挺好!但是Visual Studio Add-in (40 Mb)与中文vs不兼容不知道这个问题有谁能够解决?


Visual Studio Add-in的中文问题我知道
估计这个问题只能等待了

我的方案是在qtcreator中集成vc express
也就是说qtcreator作为VC++的集成环境外壳
其实也是一个不错的选择

如果你需要在VC集成环境中编译调试程序
只需要在你的something.pro文件中加上一句话:
TEMPLATE=vcapp  (一般通常是TEMPLATE=app)
然后在qtcreator中打开这个pro文件,运行qmake
就会产生VC使用的工程文件something.vcproj
在VC中打开
可以顺利编译
[ 此帖被qindq在2009-07-07 09:20重新编辑 ]
离线transformer

只看该作者 4楼 发表于: 2009-07-07
qt编译时竟然将路径也加进去了,移动到另一处就不能用了,晕哪!
离线qindq

只看该作者 5楼 发表于: 2009-07-07
引用第4楼transformer于2009-07-07 11:25发表的  :
qt编译时竟然将路径也加进去了,移动到另一处就不能用了,晕哪!


所以我在一台电脑里的E:  D:  F:都装了QT
统统编译了一把
离线shiroki

只看该作者 6楼 发表于: 2009-07-07
牛人啊。。你是迄今为止我见过最牛的了
--
shiro is White
ki is tree
http://www.cuteqt.com
论坛 http://www.cuteqt.com/bbs
博客 http://www.cuteqt.com/blog
博客镜像: http://sites.cuteqt.com/cuteqt
Linux/Qt/嵌入式讨论群 http://qun.qq.com/air/5699823
离线qindq

只看该作者 7楼 发表于: 2009-07-07
引用第6楼shiroki于2009-07-07 14:39发表的  :
牛人啊。。你是迄今为止我见过最牛的了


谢谢
我刚开始玩QT
要向你们学习
欢迎指导

刚刚得到一个最新消息
qt4.5.2
build with vc2005/vc2008
webkit 是可以编译过的
需要事先删除两个文件:
src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\*.tmp
src\3rdparty\webkit\WebCore\tmp\moc\release_shared\*.tmp
我已经照着做了
顺利通过
一气呵成编译约3小时(without examples and demos)
离线wd007

只看该作者 8楼 发表于: 2009-07-07
好消息,好的
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
离线zhlgh603

只看该作者 9楼 发表于: 2009-07-10
其实可以利用windows里的subst命令虚拟出一个盘符来,这样移动硬盘也可以用了

比如Qt目录在d:\develop\qt\qtmsvc9,可以用subst y: d:\develop\qt
这样只要set path=y:\qtmsvc9\bin;%path%

只要在y:\qtmsvc9下面编译就可以了,我这样用得挺好的
离线zgfree

只看该作者 10楼 发表于: 2009-07-29
这篇文章写得好,等会儿照做一遍。
离线yleesun

只看该作者 11楼 发表于: 2009-07-29
综合下来命令行应该是:
configure -platform win32-msvc2005 -no-webkit -opensource -fast -nomake examples -nomake demos
这个步骤时间不长大约20分钟

B.执行nmake
nmake
这个步骤大约4小时
强烈建议在此期间关闭杀毒程序的实时保护功能,因为在此期间编译过程会反复重写DLL,EXE,杀毒程序接管此类操作,造成莫名其妙的link错误。
我最近在编译QT就一直出现莫名其妙的link错。我把杀毒软件都卸载了还是不行?
离线fifawww

只看该作者 12楼 发表于: 2009-07-30
可以编译webkit了,

Problem is in src/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared/mocinclude.tmp
which produced empty moc_QNetworkReplyHandler.cpp file.

Just remove it and then rebuild QtWebkit again.
离线wolke
只看该作者 13楼 发表于: 2009-09-30
不敢是最好,应该是最全的帖子了。
http://xinyunliu.spaces.live.com/blog/cns!A7EBC53B7817900A!903.entry

整理好的脚本在skydriver 上

自己编译:
最简方法看 http://qtkb.net/node/5

更多更强的帖子: http://www.off-soft.net/en/develop/qt.html  小日本的技术帖,不得不赞一个

直接下载编译好的: http://code.google.com/p/qt-msvc-installer/  
快速回复
限100 字节
 
上一个 下一个