亲测VS2010纯静态编译QT4.8.2,实现VS2010编译调试Qt程序

      下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.2.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的。只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查资料看博客,一定要注意博文的文字细节,有时候差几个字就能让你费很大的劲,四处碰壁。

首先解压源码包到你想要保存编译的位置,注意文件目录一定不能包含中文和空格!

      由于Qt4.8在VS环境下的一些问题,为了避免编译中途出现,我总结了3个地方需要修改。

(1) 删除源码包中bin目录下的syncqt和syncqt.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_t,qt却编译成wchar_t-,编译会导致连接错误,提示找不到Qwstring;
QMAKE_CFLAGS_RELEASE,QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO,这2处后面的MD对应改成MT,以实现在没有VC库的电脑也能运行Qt程序。

(3) 修改src\3rdparty\webkit\Source\WebCore\platform下的DefaultLocalizationStrategy.cpp,定位到327行,将本行替换成return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));(由于word自动排版问题,请各位直接将以上英文部分一次性全复制,其实它们是一行,不要分行复制)。
如不修改将出现编译Webkit 时会出现 U1077错误。

      VS2010下纯静态编译,需要再VS2010的命令提示符下进行,我安装的是中文版visual studio2010,我的打开步骤如下(英文版自己对号入座):开始->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010),打开的窗口如下:

      上图是VS2010自动帮我配置好环境变量,已正常进入VS2010的VC目录。我当初碰到过一次自动配置环境变量错误,在截图的第二行出现一行英文,内容大概是无法确定VC环境以及VC的位置,当时查遍了各种资料以及尝试网上的各种办法,中文的外文的网站各种建议,都不可以,差点让我失去信心。当时一生气,重启电脑,出门走走又自己琢磨了好几种方法,回来刚想试一试,没想到重新打开命令提示符,居然又自动可以了,真是惊喜啊。。最后想了想,当时错误可能是先装了SDK,然后又胡乱根据网上的方法,手动修改了电脑的环境变量,然后就出现这个问题。。后来再重启电脑前,把之前手动添加的环境变量统统删了,重启后重开命令提示符就恢复了。希望对有和我相同问题的童鞋能有所帮助。

上一段是题外话,如果你的VS已经自动帮你配置好环境变量了,如上面截图所示,则输入命令进入到源码包的目录下。这里教一些命令行新手,老鸟请直接跳过,如你现在的目录在C盘下,而你的源码包在D盘,则输入”d:”,回车,进入到D盘。可以使用cd进入你所要进入的目录中,如cd Qt\4.8.0,就能进入到D:\Qt\4.8.0中,在各个目录下,可以使用dir命令查看当前目录下的所有文件,如同linux下的ls命令。我进入我的已解压的源码包目录下,我已重命名为4.8.0了。命令提示符截图如下:

     接下来进行编译前的配置工作。执行配置,完整命令如下:

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

      各个命令说明请参照我的另一篇博文:Qt configure 参数不完全说明http://www.cnblogs.com/elect-fans/archive/2012/03/28/2420647.html

推荐将debug和release版本都编译,那样VS2010编译调试Qt程序不会出现LINK错误,本人亲测,有些人说只要编译release就可以了,但我个人觉得多编译一个debug,就增加一点点空间,而且后面命令省掉了demos等文件的编译,我最终编译完成的文件也就3.6G,对于现在的电脑硬盘来说都是毛毛雨了。命令最后的-nomake demos -nomake examples -nomake docs,不变异demos,exampls,docs文件,这样既可以提高编译速度,也能减小编译后的体积。-mp适合多核用户提高编译速度,-fast也很重要,细节请看上面的博文。

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

      输入nmake,执行编译,编译过程数个小时(具体看个人电脑配置),编译时最好关闭防火墙,360之类的,你可以做别的事情了,看看网页,电影之类的,但不要运行大型程序,不然会严重降低编译速度。

     编译成功结束,如同上图所示,可以关闭命令提示符了。我之前在看网上的资料,执行nmake clean,nmake confclean,结果造成后面VS2010编译Qt程序以及QtSDK编译程序出现各种问题,如找不到config.h,qtmaind.lib等等。所以强烈建议,编译成功就到此结束,不要执行上述两个清理工作。之前还尝试在configure添加-prex 指定nmake install安装目录,后经实验,编译后,的确可以实现编译完成后能实现静态库链接,且在QtCreator编译出静态程序,但是在VS2010编译程序时,出现很多找不到PDB的警告,所以舍弃之。

更多链接请光临我的博客:http://www.cnblogs.com/elect-fans/

      接下来安装VS插件,安装文件为qt-vs-addin-1.1.10.exe,以下是安装过程以及安装的选项。

安装完成后,打开VS2010,可以通过QT菜单进行QT编译库定位以及打开pro工程文件,也可以通过新建工程项目来创建QT工程。

      打开QT工程后,稍稍等待左下角提示关联文件包含提示结束,出现“就绪”的提示后,即可像编译普通VC程序一样,点“编译”按键进行编译以及通过调试菜单进行调试。注意通过VS2010主要用于调试,要想发布最终的静态链接程序,最好通过QTSDK中的QTCreator来发布。

      安装QtSDK,以下是安装过程以及安装选项:

       安装完成后,打开QtCreator中,在菜单”工具”->”选项”->”构建和运行”->”Qt版本”,手动添加刚才静态编译的QT的qmake.exe工具。

          配置完成,接下来就可以打开Qt工程,通过项目设置来发布静态链接的Qt程序咯!!

时间: 2024-10-30 03:53:22

亲测VS2010纯静态编译QT4.8.2,实现VS2010编译调试Qt程序的相关文章

微信现金红包高级红包接口开发亲测

原文:微信现金红包高级红包接口开发亲测 微信现金红包高级红包接口开发时遇到了不少问题,网上搜索发现 微信现金红包高级红包接口开发注意事项 这篇文章问题总结得很完整,里面给的demo是VS高版本写的,运行过程中还是有些参数问题对于首次调试来说有点难度,还有微信支付现金红包接口 的接口介绍,下面的几个问题特别提出: 商户证书,下载的demo需要证书才能正确运行(可调成服务器模拟发送),而证书需要安装到服务器上,demo是控制台程序,需要的证书可直接安装后使用,其中指出的是方法X509Certific

纯静态文件环境下的Nginx优化思路

Nginx以其消耗资源少,承受并发量大,配置文件简洁等特点,深受广大sa们的喜欢,但是网上传播的nginx 配置并没有对做过多的优化.那么接下来,我就从某大型媒体网站的实际运维nginx优化角度,来给大家讲解一下nginx主要优化的那些方面. 一.编译方面优化 1.首先就要从configure 参数分析,根据网上最常用的configure 参数来说,大都是 ./configure --prefix=/usr/local/nginx --user=www --group=www  --with-h

JS 去前后空格大全(IE9亲测)

本文为大家详细介绍下JS去前后空格及所有空格,代码在IE9环境下测试,感兴趣的朋友可以参考下哈,希望对大家有所帮助   复制代码 代码如下: <html> <head> <title> IE9 亲测JS各种去空格大全 </title> </head> <script> function clearSpace(inputO){ var valueText=inputO.value; //去掉前后空格 var text1=valueTex

win8.1下无法上网出现错误711的终级解决图文教程 亲测成功

  在上网的时候出现错误711,很是烦人,查了很多资料,原来是系统中的网络服务没有启动,也说不清楚到底是什么原因,原先没有启动这些服务一样是可以上网的,现在出现了这些错误,就必须得要启动一些网络服务,这个问题就能解决.下面我们就为大家带来win8.1下无法上网出现错误711的终级解决图文教程,希望能对大家有所帮助! 方法/步骤 1.在计算机上点击右键,在出现的快捷菜单中点击管理.如下图所示: 2.在弹出的界面中找到服务及应用程序,双击打开它.如图: 3.在出现的窗口中点击服务,打开它.如图: 4

酷派7019获得root教程 亲测

亲测,亲,这个办法百分百可行,简单有步骤,包教包会!!!!   下载工具包,   首先,把手机连到电脑上,开启USB调试.不要打开USB存储.然后,xp系统的进我的电脑    win7系统的进计算机  都能看到一个wo标识的磁盘右键点一下,点打开,进到里面的driver ,双击driverinstall.exe文件(这是安装驱动,能连上豌豆荚就是已正确安装.)安装好驱动后百度(豌豆荚)下载\安装\联接手机.1.下载酷派7019 ROOT工具coolpad http://pan.baidu.com

我想发布一个纯静态网页,html的。怎么弄到外网上?买什么空间好?

问题描述 我想发布一个纯静态网页,html的.怎么弄到外网上?买什么空间好? 我想发布一个纯静态网页,html的.怎么弄到外网上?买什么空间好? 解决方案 可以买阿里云或腾讯云这种,然后自己配置环境. 也可以使用git+hexo来搭建,完成免费 解决方案二: 简单的就是用Windows server系统 然后添加自带的IIS,里面创建一个网站,在设置时的路径放置你的网页,然后 外部服务器绑定内网和外网ip,接下来访问即可 解决方案三: 买阿里云,用不着配置多高,里面装个tomcat,把你的war

亲测Discuz!X3.2:支持微信登录,无缝打通微社区

中介交易 SEO诊断 淘宝客 云主机 技术大厅 康盛官方于6月4号发布了Discuz!3.2的正式版,由于最近一直忙于一个项目,没来的及体验,现在抽时间总算是装上了(各位站长注意,康盛在6 月18日发布了最新的补丁包,修复了一些BUG,大家测试安装请用618版本,下面结合该版本的新特性与大家分享一下我的一些感受. Discuz!X3.2 在继承和完善 Discuz!X3.1 的基础上,针对社区移动端进行了新的尝试.新版本主要有两大特性:1.支持微信登录;2.将PC论坛与移动端的微社区数据全面打通

纯静态的页面怎么做301重定向

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 昨天遇见一个棘手的问题,就是页面是纯静态的,空间是IIS的,空间商又不让改配置,怎么办?首先声明我是一个新手,下面写写我一天的心得. 先上代码然后再解释 < %@ Language=VBScript % > < % if left(request.ServerVariables("HTTP_HOST"),

网站建设问题-网站纯静态页面和伪静态页面有何区别

问题描述 网站纯静态页面和伪静态页面有何区别 网站纯静态页面和伪静态页面有何区别 看网址就可以看出来 php java 哪个更合适网站开发 解决方案 纯静态,就是服务器上有个html文件,不需要任何处理,直接返回客户端. 伪静态,从客户端上看,好像在请求一个文件,但是其实是服务器动态生成的. 虽然看网址看不出来,但是明显一些内容是必须动态合成才能产生的就不可能是真的静态文件. php java 哪个更合适网站开发 都适合,相比来说,java更适合企业开发.