zoukankan      html  css  js  c++  java
  • Qt与VS2005/2008的完美配合(自己编译Qt4.5.1的详细步骤)

    介绍

    用过Linux的人想必都知道Qt(不是QuickTime,呵呵)这个名称,KDE就是用Qt写的,我也是接触Linux后才认识它的。

    Qt原先是奇趣科技TM(Trolltech)的产品,由Haavard Nord(Trolltech的CEO)和Eirik Chambe-Eng(Trolltech的董事长)于1991年开始它的历史,三年后他们创建了QuasarTechnologies公司,后改名为Trolltech,其发展与KDE的发展紧密关联,可以说早期时每个KDE版本的发布都是Qt的一个里程碑事 件。之所以叫Qt,据说是因为字母“Q”在Haavard的Emacs所用的字体中很PP -_-!,而字母“t”是toolkit的意思。

    Haavard和Eirik要开发Qt的起因是当时他们正在做一个项目(1991),必需在Unix、Macintosh和Windows环境下运 行。那个夏季的一天,Haavard和Eirik出去散步,当他们坐在一个公园长凳上时,Haavard说,“我们需要一个面向对象的显示系统。”。这次 讨论的结果为他们即将创建的跨平台GUI框架埋下了伏笔。

    1991年,在设计上与Eirik合作,Haavard开始写了一些类,它们后来成为Qt。在这年的接下来时间里,Eirik提出了 “signals and slots”的想法,这也是Qt的一个重要特征。在这年末,在Haavard的提议下,两人一起下网开发“世界上最好的C++ GUI 框架”。

    1994对这两个年轻的程序员来说是不幸的,没有一个客户,手头还是一个未完成的项目,没有钱。幸运的是,他们的妻子都有工作,可以支持他们(感动 啊!!)。之后感谢与Haavard的一个大学时候的教授的联系,一家公司给了他们用Qt开发运行在Unix和Windows上的软件的机会。终于在 1995年5月20号,Qt 0.90发布了,这是Qt的第一个公开发行版。

    之后还有很多故事,如Qct KDE组织的成立,KDE和Gnome的PK,Qt协议的变更,及Qt的几个重要发行版,Nokia收购Qt,Qt支持LGPL协议等,就不介绍了。已经 有点跑题了,介绍就到这...

    为什么用Qt

    如果就写跨平台的程序,Qt是一个很好的选择,当然还有很好其它的GUI库,如wxWidgets、gtk等。我选择Qt主要是因为程序简单,可拓 展性强,代码思路清晰,文档强悍!一般写GUI,如果用到新的class都是再查文档、看例程的,而这点用起来比MFC方便、灵活。用MFC写程序不舒服 的地方时,很好时候代码是用向导生成的,MSDN中对于GUI的class的例程不够多。例程充足,这样代码完全可以自己写,这样条理就清楚了。

    安装与编译

    1. Commercial Edition

    如果你用的是商业版本,那只要选择好对应开发平台的就可以了,如vs2005sp1的,安装下就可以了,连带Visual Studio Addon,连编译都省了。

    2. Open-Source Edition

    官方有提供MinGW下的安装版本,可以选择连带的Qt Creator。这个IDE比较赞的,支持一些简单的自动代码补全,可以方便的查看Doc。还提供了git、svn等版本控制工具的集成支持,当然还有 Qt Designer、Qt Linguist的集成。

    如果用在VS2005/2008中使用,就只是自己动手编译了。编译过程很简单,下面假设IDE是VS2005,操作如下:

    简单编译

    a. 下载Qt原代码包,如qt_4.5.1_opensource.zip,解压到一个剩余空间大于3.5G的分区。

    b. 设置系统环境变量:

    QTDIR —— 刚刚解压的Qt根目录,

    添加%QTDIR%in到Path,

    QMAKESPEC ——win32-msvc2005

    c. 打开VS的Command Prompt,输入:

    > configure

    > nmake

    编译大约要2-4小时,编译结果占3.5G左右。

    自定义编译

    从上面的c步骤开始:

    c. 打开VS的Command Prompt,输入:

    > configure --help

    查看configure的可以使用的选项

    我自己可能会用的:

    -release     编译release版本

    -debug          编译debug版本

    -debug-and-release  两个版本都编译

    -shared         编译dll版本

    -static         编译静态链接库版本

    -fast           configure时只生成目录级的Makefile

    -no-qt3support      不支持Qt3

    -qt-libjpeg     用Qt的jpeg解码,用system-jpeg时,软件发布到其它电脑上时jpg解码出问题了

    -vcproj         生成vs2005的vcproj工程文件,方便以后,一般不用,占地方

    -phonon         视频播放支持,需要DirectShow(DShow)

    -direct3d       direct3d支持,需要D3D SDK

    注意:

    用-phonon和-direct3d选项时,需要在之前设置环境变量,参与Qt的Readme。

    DShow安装比较麻烦,因为MS已经停止DShow的支持了,取而代之的是Media Foundation,在Vista和Win7中开始应用。DShow的最后版本环境是D3D2005 SDK和Direct Show包,好像还要Windows SDK 2003云云,配置过,记不清楚了。

    d. 修改Qt如果不想编译的部分

    如不想编译examples目录下的文件,打开$(QTDIR)examplesMakefile,修改为(添加skip-all和 skip-qmake两行)

    all:

    skip-all:

        D:Qt4.5.2-vs2008sp1inqmakeD:/Qt/4.5.2-vs2008sp1/examplesexamples.pro -o Makefile -spec win32-msvc2008

        nmake -f Makefile

    first: all

    qmake:

    skip-qmake:

        D:Qt4.5.2-vs2008sp1inqmakeD:/Qt/4.5.2-vs2008sp1/examplesexamples.pro -o Makefile -spec win32-msvc2008

    这样编译都这里时就直接跳过了,注意设置时要慎重,一些目录下的代码可能是编译基本库文件所需要的,特别是src目录下的。如果你不想生成 qdemo.exe可以相仿地修改$(QTDIR)demosMakefile文件。

    e. 编译后的清理

    如果你打算以后动不再修改编译选项的话,又对Qt临时文件占地方不舒服的话,可以清理一些临时文件,最终可以减小到800M左右。

    清理bin下除*.pdb和*.dll外的临时文件,注意临时文件指的是编译生成的文件,如*.obj、*.ilk之类的文件

    清理lib下除*.prl和*.lib外的临时文件,*.prl不知道有什么用,反正小,就留着吧。

    清理src下除vc[n].pdb外的临时文件,如vs2005是vc80.pdb而vs2008是vc90.pdb。

    tools、plugin和qmake目录类似

    配置VS2005

    1. Qt Visual StudioAdd-in

    Qt官方下载:http://qt.nokia.com/downloads/visual-studio-add-in

    主要提供VS2005/2008的集成,如调用Designer、Linguist和一些帮助,还有修改Debug信息显示方式,使Debug时数 据显示更直观。

    2. 好像没有了。。。

    使用Qt写程序

    1. 唯美主义 - 不使用Designer

    我个人常用的方法,这样怎么开始Qt工程呢?

    新建个目录,如hi_qt,再新建个文件main.cpp,生成工程文件hi_qt.pro

    qmake -project

    生成VS工程文件hi_qt.vcproj:

    qmake -tp vc

    打开hi_qt.vcproj,菜单Qt->Convert project to Qt Add-in project,这样就可以用Qt VS Add-in的功能新建Qt class了。

    2. 一般方法

    就是直接用Qt VS Add-in 的导向了,不爽的是一定要生成ui文件和qrc文件,当然你也可以事后删除它们,这个就不多说了。

    3. 让Designer做大部分工作

    主要是结合Qt VS Add-in和Designer完成大部分界面工作,如在界面中插入自己定义的Widget,写Style Sheet等。这个说起来比较复杂,不多说了,一般用得不多,以后有时间再慢慢整理。

    参考

    C++ GUI Programming withQt 4, 2006, A Brief History of Qt

    Qt Assistant 4.5.2

    Qt Home

    初涉 Windows Mobile下的QT程序移植和部署

    http://www.cnblogs.com/bingcaihuang/archive/2010/12/07/1898661.html

  • 相关阅读:
    DVWA 黑客攻防演练(十)反射型 XSS 攻击 Reflected Cross Site Scripting
    DVWA 黑客攻防演练(九) SQL 盲注 SQL Injection (Blind)
    DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
    DVWA 黑客攻防演练(七)Weak Session IDs
    DVWA 黑客攻防演练(六)不安全的验证码 Insecure CAPTCHA
    DVWA 黑客攻防演练(五)文件上传漏洞 File Upload
    工作流表结构设计
    Visual Studio 2019尝鲜----新建空项目体验
    《使用CSLA 2019:CSLA .NET概述》原版和机译文档下载
    .NET快速开发平台的在线预览
  • 原文地址:https://www.cnblogs.com/findumars/p/6152901.html
Copyright © 2011-2022 走看看