• VS2008编译器编译出来的文件比mingw编译的要几乎小一半


    为什么要在VS2008中使用QT静态编译呢?很简单,因为VS2008编译器编译出来的文件比mingw编译的要几乎小一半。

    好了现在我们来做些准备工作,VS2008自然要安装的,然后打上SP1的补丁。然后我们要到QT主页下载,QT4.7.4版的源码包 qt-everywhere-opensource-src-4.7.4.zip,因为用源码包编译没那么容易出错;另外还有QT for VS 的插件 qt-vs-addin-1.1.9.exe,这两个准备好就可以开始安装了。

    第一步:

    把源码 包qt-everywhere-opensource-src-4.7.4.zip解压到D盘,把目录名字qt-everywhere- opensource-src-4.7.4改为Qt,然后进入D:Qtmkspecswin32-msvc2008 目录(如果是2010就进入win32-msvc2010目录),修改qmake.conf文件,把下面三行红色部分

    QMAKE_CFLAGS_RELEASE    = -O2 -MD[喝小酒的网摘]http://blog.const.net.cn/a/12309.htm
    QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
    QMAKE_CFLAGS_DEBUG      = -Zi -MDd

    修改后:

    QMAKE_CFLAGS_RELEASE    = -O2 -MT
    QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
    QMAKE_CFLAGS_DEBUG      = -Zi -MTd

    说明:D 就是Dynamic 动态;T 就是 Static 静态的意思,只有修改这个才能把Qt库编译成静态。

    第二步:设置环境变量

    在PATH环境变量中添加:”D:Qt″

    添加新的环境变量,名字为”QMAKESPEC”,值为”win32-msvc2008″(如果是2010就修改为“win32-msvc2010”)

    添加新的环境变量,名字为”QTDIR”,值为”D:Qt″

    最好重启下系统令环境变量生效。

    第三步:生成Qt编译配置

    首先打开VS2008命令行提示符,进入D:Qt 目录

    命令如下:

    d: (回车)

    cd d:Qt (回车)

    configure -platform win32-msvc2008 -debug-and-release -opensource -static -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp -qt-style-windowsvista -nomake examples -nomake docs -nomake demos (回车)

    提示是否继续,选择 y

    等待十来二十分钟就完成编译配置的生成。

    然后输入命令: nmake     

    开始编译Qt静态库。大概一两个小时吧,视机器配置而定,就能够编译完成了。接下来是很关键的一点,这个关系到LINK4099错误的问题,很多人都在静态编译之后,输入nmake clean 命令,这个命令坚决不能执行,否则就会删除VC90.pdb等的文件,导致LINK4099错误,切记,我是来回编译了好几次才发现这个问题出现的原因,就是清理了编译过程生成的中间文件,网上的解决办法完全不行。

    第四步:安装qt-vs-addin-1.1.9.exe Qt for VS插件以及配置VS2008(2010也可以,都差不多)

    这里要说一下的就是设置VS2008里面的编译器和库文件目录,以及智能感知目录如果你使用VAssisX来进行智能感知输入的话。

    打开VS2008,点“工具”菜单,“选项”,“项目和解决方案”,“VC++目录”右边“显示以下内容的目录”:

    (1)可执行文件:添加“$(QTDIR)in”,如图

    (2)包含文件:添加"$(QTDIR)include",如图

    (3)库文件:添加“$(QTDIR)lib”

    VAssisX 配置两个地方,如下两图

     

    到这里整个开发环境就安装配置完成了,重启VS2008就可以正常使用了。最后要提醒 的就是,你在VS创建的QT项目,记得把项目属性中的“代码生成”中的“运行库”改成“多线程调试(/MTd)”或者“多线程(/MT)”,因为QT已经 编译成静态库了。还有,记得不要使用 nmake clean 命令,否则出现了 LINK4099 错误,找不到“VC90.pdb”可别怪我没提醒你啊:)

    (下图是修改运行库为静态)

    (下图为编译0警告0错误)

    [喝小酒的网摘]http://blog.const.net.cn/a/12309.htm

    http://blog.csdn.net/davidsu33/article/details/23733615

  • 相关阅读:
    选择排序
    转:ASP.NET MVC中Unobtrusive Ajax的妙用
    转:MVC 下导航超链接本页面高亮的一种解决方案
    转载:iOS 推送的服务端实现
    转载:Unobtrusive JavaScript in ASP.NET MVC 3 隐式的脚本在MVC3
    待实践三:MVC3下 路由的测试 使用 RouteDebug.dll 来测试判断路由是否符合
    待实践二:MVC3下的3种验证 (1)前台 jquery validate验证 (2)MVC实体验证 (3)EF生成的/自己手写的 自定义实体校验(伙伴类+元素据共享)
    待实践一:仿造博客园后台上传头像并切图生成缩略图fine uploader.js jcrop.js
    Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据
    Linq 时间对比陷阱坑
  • 原文地址:https://www.cnblogs.com/findumars/p/4666105.html
Copyright © 2020-2023  润新知