前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Qt与VS2005/2008的完美配合(自己编译Qt4.5.1的详细步骤)

Qt与VS2005/2008的完美配合(自己编译Qt4.5.1的详细步骤)

作者头像
用户3519280
发布2023-07-06 11:31:32
4350
发布2023-07-06 11:31:32
举报
文章被收录于专栏:c++ 学习分享c++ 学习分享

介绍

用过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%\bin到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)\examples\Makefile,修改为(添加skip-all和 skip-qmake两行)

all:

skip-all:

    D:\Qt\4.5.2-vs2008sp1\bin\qmakeD:/Qt/4.5.2-vs2008sp1/examples\examples.pro -o Makefile -spec win32-msvc2008

    nmake -f Makefile

first: all

qmake:

skip-qmake:

    D:\Qt\4.5.2-vs2008sp1\bin\qmakeD:/Qt/4.5.2-vs2008sp1/examples\examples.pro -o Makefile -spec win32-msvc2008

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

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

分类: Qt-安装与编译

qmake生成VS的vcproj/sln工程文件

qmake 生成的vs工程与环境变量中的 qmakespec相关,可以有两种方法: 1.默认情况下,即环境变量qmakespec为你装的qt for vs的版本,默认生成的为该版本的vs工程,如,你装的是QT for vs2010,那么环境变量qmakespec=win32-msvc2010,默认情况下生成的是vc2010的工程。   当你的xx.pro的TEMPLATE = subdirs时:用qmake -r -tp vc xx.pro 生成sln。   其他情况下用:qmake -tp vc xx.pro或qmake -t vcapp xx.pro 生成vcxproj 2.生成指定版本的VS工程  在上面的命令中加入 -spec win32-msvc2008即可。 例如:qmake -spec win32-msvc2008 -r -tp vc xx.pro 递归的生成sln工程。 如果是要生成2005工程的话,那么命令就是qmake -spec win32-msvc2005 -r -tp vc xx.pro 当你机器上装有多个Qt版本的话,注意你的Qt版本与Vs的版本匹配性,如果你Vs内嵌的是Qt4.5的话,那么你qmake命令指定的就是你Qt4,.5\bin里面的qmake.exe,不要弄错。

转自:https://blog.csdn.net/devil_box/article/details/41345179

Qt工程转换成VS工程

标签: 工程转换VS

版权声明:本文为博主原创文章,未经博主允许不得转载。

在windows下,运行Qt Command Prompt。

输入命令行:

qmake -tp vc XXX.pro

会生成文件XXX.vcxproj

Visual Studio的project转成QT Creator

project

本人QT生手,最近项目上却有个需求,要将原本的Visual Studio的project转成QT Creator的project。在进行了一番研究和动手实践以及再研究再实践之后,终于成功完成了这一转换,特此记录。

环境:

- Visual Studio 2013 (Ultimate)

- QT 5.5 Community

- 原本的VS工程是一个生成dll的工程

- 原本的VS工程其实是基于QT Template的工程

 (安装了QT的VS插件,就可以在VS里建立基于QT template的工程。但是这里又有故事了。对于Visual Studio 2013,插件(add-in)已经不再是推荐的方式,推荐的方式叫做package或extension。所以一旦你安装了QT的插件(往往是2012版的),再想卸载它就无比困难了,就连MSDN上也没能写一个很清晰的解决方案,而网上的解决方案多为修改注册表,笔者没有试过,不知道能否卸载干净。)

以上谈.pro文件的时候还谈到了qmake,那么它是什么呢?为何说.pro文件是为了跨平台而写的呢?原来,qmake是Trolltech公司(于2008年被诺基亚收购)创建的用来为不同的平台和编译器书写Makefile的工具。手写Makefile是比较困难并且容易出错的,尤其是需要给不同的平台和编译器组合写几个Makefile。使用qmake,开发者创建一个简单的“项目”文件(即.pro文件)并且运行qmake生成适当的Makefile。qmake会注意所有的编译器和平台的依赖性,可以把开发者解放出来只关心他们的代码。Trolltech公司使用qmake作为Qt库和Qt所提供的工具的主要连编工具。 那么了解了qmake和.pro文件的写法之后,再来看看我的转换历程吧。

第一步,因为原Visual Studio工程就是基于QT Template的工程,所以我们可以用VS里的QT插件里的"Create basic .pro file..."菜单选项来自动生成一个.pro文件,实际上,不仅仅生成了.pro 文件,还生成了.pri文件。但是目前的.pro文件还是不能用的,因为其中还有大量的配置需要修改,比如INCLUDEPATH和LIBS. 

第二步,修改.pro文件使其包含正确而必要的配置信息。

总结笔者对.pro文件的具体修改如下:

1. TEMPLATE = lib

2. 将DESTDIR =  xxx改成:

    Release:DESTDIR = xxx/Release

    Debug:DESTDIR = xxx/Debug

3. CONFIG += debug_and_release

4. 完善INCLUDEPATH

5. 完善DEPENDPATH (这里又有故事了:事后笔者发现,只要在LIBS里写了-L"<LIBPATH>",就没必要写DEPENDPATH了。)

6. 加上 Release:DEPENDPATH 和 Debug:DEPENDPATH

7. 类似的,完善LIBS,添加Release:LIBS和Debug:LIBS

第三步,双击改好的.pro文件,QT Creator打开此工程,选中合适的Kit,就可以build了。因为是64位机器,Kit选的是QT 5.5.1的msvc2013_64. 

最后千万要注意的是,在系统环境变量%PATH%里,对于Visual Studio的编译器cl.exe和链接器link.exe, 要选对路径。比如,对于64位的机器,路径 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64 应该被加到%PATH%中,而不是 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin 这一条在前一篇博文中已有详细阐述。

以上步骤做完后,就可以顺利地在QT Creator中进行build了。

最后还要提醒的一点是,如果更改了.pro文件,想让更改生效,必须手动删除qmake生成的Makefile, Makefile.Debug和Makefile.Release文件。

下面是一个.pro文件的实例:

[plain] view plain copy

  1. TEMPLATE = lib  
  2. TARGET = MyProject  
  3. Release:DESTDIR = ../../../Output/x64/Release  
  4. Debug:DESTDIR = ../../../Output/x64/Debug  
  5. QT += core qml  
  6. CONFIG += debug_and_release  
  7. DEFINES += WIN64 QT_DLL QT_QML_LIB MyProject_LIB  
  8. INCLUDEPATH += ./GeneratedFiles \  
  9.     . \  
  10.     ./GeneratedFiles/Release \  
  11.     $$(VC_INCLUDE) \  
  12.     $$(VC_INCLUDE)/../atlmfc/include \  
  13.     $$(WINSDK_INCLUDE)/shared \  
  14.     $$(WINSDK_INCLUDE)/um  
  15. DEPENDPATH += . \  
  16.     $$(WINSDK_LIB)/um/x64 \  
  17.     $$(VC_LIB)/amd64 \  
  18.     $$(QTDIR)/lib \  
  19.     $$(QTDIR)/bin \  
  20. Release:DEPENDPATH +=  ../../../3rd_library/opencv/libs/Release/x64 \  
  21.     ../../../3rd_library/DirectShow/baseclasses/x64/Release  
  22. Debug:DEPENDPATH += ../../../3rd_library/opencv/libs/Debug/x64 \  
  23.     ../../../3rd_library/DirectShow/baseclasses/x64/Debug  
  24. MOC_DIR += ./GeneratedFiles/release  
  25. OBJECTS_DIR += release  
  26. UI_DIR += ./GeneratedFiles  
  27. RCC_DIR += ./GeneratedFiles  
  28. Release:LIBS += -L"../../../3rd_library/DirectShow/baseclasses/x64/Release" \  
  29.     -lstrmbase \  
  30.     -L"../../../3rd_library/opencv/libs/Release/x64" \  
  31.     -lqtmain \  
  32.     -lQt5Qml \  
  33.     -lQt5Core \  
  34.     -lopencv_calib3d248 \  
  35.     -lopencv_contrib248 \  
  36.     -lopencv_core248 \  
  37.     -lopencv_features2d248 \  
  38.     -lopencv_flann248 \  
  39.     -lopencv_gpu248 \  
  40.     -lopencv_highgui248 \  
  41.     -lopencv_imgproc248 \  
  42.     -lopencv_legacy248 \  
  43.     -lopencv_ml248 \  
  44.     -lopencv_nonfree248 \  
  45.     -lopencv_objdetect248 \  
  46.     -lopencv_ocl248 \  
  47.     -lopencv_photo248 \  
  48.     -lopencv_stitching248 \  
  49.     -lopencv_superres248 \  
  50.     -lopencv_ts248 \  
  51.     -lopencv_video248 \  
  52.     -lopencv_videostab248  
  53. Debug:LIBS += -L"../../../3rd_library/DirectShow/baseclasses/x64/Debug" \  
  54.     -lstrmbasd \  
  55.     -L"../../../3rd_library/opencv/libs/Debug/x64" \  
  56.     -lqtmaind \  
  57.     -lQt5Qmld \  
  58.     -lQt5Cored \  
  59.     -lopencv_calib3d248d \  
  60.     -lopencv_contrib248d \  
  61.     -lopencv_core248d \  
  62.     -lopencv_features2d248d \  
  63.     -lopencv_flann248d \  
  64.     -lopencv_gpu248d \  
  65.     -lopencv_highgui248d \  
  66.     -lopencv_imgproc248d \  
  67.     -lopencv_legacy248d \  
  68.     -lopencv_ml248d \  
  69.     -lopencv_nonfree248d \  
  70.     -lopencv_objdetect248d \  
  71.     -lopencv_ocl248d \  
  72.     -lopencv_photo248d \  
  73.     -lopencv_stitching248d \  
  74.     -lopencv_superres248d \  
  75.     -lopencv_ts248d \  
  76.     -lopencv_video248d \  
  77.     -lopencv_videostab248d  
  78. LIBS += -L"$$(WINSDK_LIB)/um/x64" \  
  79.     -L"$$(VC_LIB)/amd64" \  
  80.     -L"$$(QTDIR)/lib" \  
  81.     -L"$$(QTDIR)/bin" \  
  82.     -lWtsapi32 \  
  83.     -lPathcch \  
  84.     -l3DScanningEngine \  
  85.     -lUserenv \  
  86.     -lwinmm \  
  87.     -lMf \  
  88.     -lMfplat  
  89. include(MyProject.pri)  

在实际build的过程中,笔者又发现QT是调用jom.exe去做的。这是个什么呢?原来,在VS里面,有一个工具叫做nmake,它和Linux上的make很像。但是这个nmake有一个缺点(笔者不确定现在还有没有这个缺点,但在2009年的时候是有的),就是它无法利用多核的优势并行编译。于是,就有人写了这么一个叫做jom的工具,类似于是多线程版本的nmake. 最初的那篇介绍jom的文章在这里: http://blog.qt.io/blog/2009/03/27/speeding-up-visual-c-qt-builds/

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Qt工程转换成VS工程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档