Chinaunix首页 | 论坛 | 博客
  • 博客访问: 642265
  • 博文数量: 63
  • 博客积分: 1265
  • 博客等级: 中尉
  • 技术积分: 789
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-06 21:54
文章分类

全部博文(63)

文章存档

2017年(1)

2016年(3)

2015年(2)

2013年(5)

2012年(20)

2011年(32)

分类: WINDOWS

2012-06-10 13:12:04

    QT默认是动态编译,正常运行需要调用QT的标准库(即.dll),因此要想脱离IDE单独运行,必须满足:将关联的dll拷贝至.exe同目录(或system32文件夹内),或者在环境变量中添加QT标准库的路径。否则就会出现找不到动态库的警告。这就使得QT的通用性受到了局限,尤其是用QT开发上位机时,如果需要在某台电脑上观测数据,除了exe,还得拷贝一大堆dll过去,显得很麻烦。若想仅需要一个exe文件,就可以在所有装有win系统下的电脑上运行就需要将QT的标准库进行静态编译。
 
    首先到QT主页下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.2.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的。只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大。
 
    编译之前需要做的工作如下:
   1、删除源码包中bin目录下的syncqtsyncqt.dat文件,如你不放心可将其改名或剪切到别的位置。如不修改将发生 Perl not found in environment - cannot run syncqt 错误。

   2、修改\\mkspecs\\win32-msvc2010下的qmake.conf文件,将其中的QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t- 修改为QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t   (注意末尾的”-“号区别)。如不修改将来如有项目使用wchar_tqt却编译成wchar_t-,编译会导致连接错误,提示找不到Qwstring搜索整个文件,将MD,MDd对应改成MT,MTd,以实现在没有VC库的电脑也能运行Qt程序。

   3、修改src\\3rdparty\\webkit\\Source\\WebCore\\platform下的DefaultLocalizationStrategy.cpp,定位到327行,将本行return WEB_UI_STRING("Look Up """, "Look Up context menu item with selected word").replace("", truncatedStringForLookupMenuItem(selectedString));替换成return WEB_UI_STRING("Look Up \\"\\"", "Look Up context menu item with selected word").replace("", truncatedStringForLookupMenuItem(selectedString));如不修改将出现编译Webkit 时会出现 U1077错误。

    编译过程:

    依次打开:开始->所有程序->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010),然后输入命令进入到源码包的目录下,执行配置命令:

configure -debug-and-release -fast -static -platform win32-msvc2010 -no-qt3support -script -scripttools -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-sql-sqlite -plugin-sql-sqlite -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -nomake demos -nomake examples -nomake docs -mp

   本文是将debug和release版本都编译,网上许多教程是只编译release版本,调试的时候动态链接发布静态链接。命令最后的-nomake demos -nomake examples -nomake docs,不编译demos,exampls,docs文件,这样既可以提高编译速度,也能减小编译后的体积。-mp适合多核用户提高编译速度,-fast也可以提高编译速度。

   执行配置,期间会询问是否采用open source(开源版本),还是商业版本,输入”o”选择开源版本;询问是否同意条款,输入”y”表示同意,开始执行配置过程,直到提示配置完成,可以下一步nmake,以开始执行编译。

   根据网上的建议, 编译结束之后没有执行 nmake clean,nmake confclean清理工作的步骤,据说如果执行会造成后面VS2010编译Qt程序以及QtSDK编译程序出现各种问题,如找不到config.h,qtmaind.lib等等。  同样没有在configure添加-prex 指定nmake install安装目录,如果指定会VS2010编译程序时,出现很多找不到PDB的警告。

 
阅读(6632) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~