• 24048阅读
  • 1回复

QT的编译安装(以4.2.3 for windows为例) [复制链接]

上一主题 下一主题
离线csoapy
 

只看楼主 倒序阅读 楼主  发表于: 2007-04-05
— 本帖被 XChinux 执行加亮操作(2007-08-12) —
前言:本人连续10多次编译QT库失败,现总结经验,以飼后来者。
QT编译主要有两步:configure配置QT,make生成平台相关的QT库,下面分别说明。

第一步:configure
  configure这一步很关键。主要目的有两个,一是根据环境变量QTDIR,QMAKESPEC和PATH来生成平台相关的qmake.exe;二是,顾名思义,配置QT环境了,比如源文件放在哪里,库在哪里,是否支持OpenGL等等。想了解如何配置可以在QTDIR中打上"configure --help"(UNIX风格)
  生成QMAKE一般问题不大,只要有支持的编译器再设好环境变量就行了。到QTDIR的readme里找出适合自己的编译器,然后指定给QMAKESPEC;QTDIR的真实路径中不要包含空格,如"C:\Program Files\QT"就不行;path就不用说了。
  此处经常出错的地方就是rcc.exe和uic.exe。如果你从别的地方把它们拷了过来,一时搪塞过这一关,那么很可能造成下一步make时会再次遇到该问题,正确的做法先运行一次configure,以产生qmake,然后切换到src目录,qmake,(n)make.至于为什么要这么做,看QT4.2.2 for vs2005 就是了,它在安装过程中就没有编译(否则不会很快就安装完),装完后bin目录下已有很多exe,dll之类的文件了。
  
  至于编译器,最好用“现代版”的,这样对C++标准的支持要好些,难道还有人在用VC6这样的残缺古董?我用的是VS2005+SP1,没有把VS2005装在系统盘里的朋友要注意了,如果你的还原时只还原系统盘,很可能造成QT无法编译安装!本人为此折腾了两三天,也为的是备份/还原系统方便,把程序都装在了D盘,用了大半年都没问题,这次给撞上了:不是configure的时候出错,就是nmake时出错。错误提示信息为“...\uic.exe 不是内部或外部程序,也不是可运行的程序”、“U1077, cl.exe异常退出,0x2”之类。前前后后把QT编译了N次总是有这样那样的错误,最后想起来上次成功是在没有还原系统的情况下编译的,可能是系统盘中某些VS信息与程序盘中的对不上号,所以重装VS2005+SP1,然后就一切顺利,而且在公司机器和自己的笔记本上都这样。所以,还是把VS2005装到系统盘为好。另外一个问题就是SP1的一个BUG:你在configure的时候它会报错,说位置在qmap.h,qhash.h这两个文件中,等MS发布这个BUG的补丁太漫长了,所以只能改这两个文件的代码以避开此BUG,方法:把QMap和QHash模板中的replace()和insert()成员函数均改为在类内实现,把外部实现(在文件末尾处)注释掉即可。看起来VS2005这么麻烦,我在VC6下做了个实验,一切顺利,看来古老有古老的好处。

第二步:make
  这一步是根据configure时由qmake生成的makefile来编译QT库。只要前面配置好,一般就不会出什么问题。如果有rcc.exe和uic.exe之类的错误,建议重新make一下src目录。

注意事项:
  在编译QT前应准备2G的磁盘剩余空间,其实编译完后QT目录占1.6xGB,剩下的是给“磁盘空间不足”的警告来用的。另外QT库的编译时间很漫长(3个小时左右,IBM ThinkPad T30标配机器)。这里给个参考,以便朋友们编译时心里有个数。我是这样的,configure和nmake的时候均把屏幕输出重定向到文本文件里,configure会有五六百行的输出,大小三四十KB,耗时六七分钟;nmake会有近七千行的输出,大小2MB左右,耗时约三小时。这样的话看看文件大小或打开输出文件看行号,就知道现在大约进行到哪里了。附件里是我的configure和nmake输出文件,注意License信息不可用,发这篇文章时我给改了。

描述:编译输出文件
附件: config.rar (73 K) 下载次数:580
离线hermanxwong
只看该作者 1楼 发表于: 2009-02-24
great.
快速回复
限100 字节
 
上一个 下一个