[分享]详解如何配置Qt使用VS2010进行开发
Qt –一个跨平台应用程序和UI开发框架
它包括跨平台类库、集成开发工具和跨平台IDE。使用Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。
. c k+
F$ r3 U. \+ G4 w- w
Qt 主要是由诺基亚开发和维护的。Qt通过开源授权(LGPL 和GPL)以及商业授权的方式对Qt 进行授权。在Linux下Qt可是大名鼎鼎,Linux的KDE图形界面就是基于Qt 开发的。. d5 C! z; k. ]- O4 ?0 \- ]4 t
Qt的最大好处是跨平台,可以看到上图,Qt可以支持windows,Mac os,linux,embedded linux,wince/mobile,symbian,诺基亚最新的Megoo那也是不在话下了,由于公司最近有些项目要求跨平台的支持,原来的GIS引擎是基于Windows开发的,虽然没有用MFC,但是由于绘图引擎这块使用的GDI+,所以跨平台是非常困难的。所以为了支持跨平台以及在可预见的将来的跨平台的需求,决定将绘图引擎这块在Qt的基础上进行重构,并使用Qt 开发一套基于QtGis引擎的地图项目管理应用程序。
我在博客中将会同步将开发这个应用程序的步骤展示出来,希望能通过这个系列的博客,来展示Qt开发应用程序的便利性以及展示我们公司GIS引擎的强大能力。应用程序的源代码将会同步放在每篇教程内提供下载。Gis引擎将通过提供SDK的方式方便大家学习及开发。
第一篇. 配置Qt的windows开发环境,并通过Visual Studio 2010进行开发。2 X6 g5 x# Y: i7 t. U) t! ?
1. 下载Qt的安装包和Visual Studio 2010的Qt插件,大家可以到下面的地址进行下载(下面的下载都是基于Windows的,如果是其他环境的操作系统可以到这里下载).( h- \, N# _7 Q4 Z- \
Qt SDK: https://www.sodocs.net/doc/594907631.html,/downloads/sdk-windows-cpp
Visual Studio 2010开发插件: https://www.sodocs.net/doc/594907631.html,/downloads/visual-studio-add-in
2. 安装Qt SDK8 }7 V' y" ] O- Y5 j, \
安装其实很简单了,基本上一路回车即可,主要是要注意下Qt的安装路径最好安装在全英文路径而且中间没有空格, 安装好后,可以运行开始菜单里面的Qt Demo,直观感受下Qt的强大功能!
界面非常炫酷" t `- Q& V" v) ^6 Y$ @( R( |1 A4 Z
3. 安装Qt的VS开发插件
同安装Qt SDK一样,一路上回车即可,安装后在Visual Studio 2010上新增一菜单Qt,如图所示- t3 ]* A% Q" q% U/ I# r2 a( ~
7 l; B, S9 l0 w
4. 编译Qt
Qt默认使用mingw进行编译,如果要使用V isual Studio 2010开发,需要将Qt重新编译。. {4 i7 \0 ]2 o h. `0 n
进入开始菜单Microsoft V isual Studio 2010,Visual Studio Tools,Visual Studio Command Prompt (2010),需要注意的是,这里面必须是使用V isual Studio Command Prompt (2010),不能使用CMD的Dos窗口2 R# ~( A2 A4 F! f
7 c2 {0 A0 Y2 P1 H% G& q
进入Qt的安装目录后,执行CD Qt,进入Qt的根目录2 f: h5 z _7 g9 C2 W; e7 h
& t, H1 b: X. ^7 A1 t1 H3 g
运行命令configure -platform win32-msvc2010,o(选择opensource模式)回车,Y(同意license)回车
接着就会自动配置Qt的编译环境,等配置结束后,运行nmake,回车,Qt就会开始漫长的编译过程,这段时间非常长,需要4个小时以上,大家可以在晚上睡觉的时候进行编译。+ m4 a |) [7 m; W1 M
( g5 \5 O)
_) Q# E: V. J( }
5.配置Visual Studio 2010的Qt开发环境(V isual Studio 2010最好是英文版本,Qt对Visual Studio 2010中文版本可能支持的不好)
等Qt编译好后就可以配置V isual Studio 2010的开发环境了,进入Visual Studio 2010,选择Qt菜单,Qt Option,进入下图界面' ^# Q3 y- }; B) v2 E2 }3 k
, ]4 g# o* G9 a+ _4 y% L
0 F. u- u% Q$ S5 ^
点击Add,添加Qt的安装目录,并取名字,我这里使用Qt的发现版本最为名称,选择
OK后即可。6 f* U+ E5 y# j' ]& g# @
6.新建或者导入Qt项目
可以通过在Visual Studio 2010新建一个Qt项目- y. N6 @9 j q5 c3 O( @
8 S: z) n8 o4 F/ O9 B
导入Qt的Pro项目Pro是Qt自带编译器Qt Creator的项目工程文件,如果想使用V isual Studio 2010开发则需要将原有项目的Pro导入到Visual Studio 2010的项目文件中,可以使用菜单Qt-Open$ K' H' n" m2 G# ?
P$ D6 [7 N2 ^* v3 u
这样我们的Qt开发环境就搭建好了,大家可以将Qt目录下的Example和Demo下的例子的运行看一遍,体验下Qt的强大和便捷,Enjoy!
好像有问题啊。
qt4.7在用vs2010编译时,正常情况下会出现两次错误' ~. ?! O! z% m1 T! L
编译大概1个小时之后,出现:& z1 x+ K1 ]* U+ @* }
! F' G, k7 M$ \ i! ?
01.api\qscriptextensionplugin.h(43): Error: Undefined interface & c4 J6 o5 L8 C3 p J
02.NMAKE : fatal error U1077: 'C:\Qt\2009.05\qt\bin\moc.exe' : return code '0x1' 1 t; G" r9 E5 O" m9 j7 v# y7 J
03.Stop. $ _0 H% z5 K+ ? c6 I' r9 W0 b
04.NMAKE : fatal error U1077: '"d:\Program Files\Microsoft V isual Studio 9.0\VC\BIN
05.\nmake.exe"' : return code '0x2' ! H+ X. |- T+ g( S5 L: \
06.Stop. 9 H8 @7 c$ k' a. y& T& \( Y
07.NMAKE : fatal error U1077: 'cd' : return code '0x2'
08.Stop.
api\qscriptextensionplugin.h(43): Error: Undefined interface8 V8 e3 t4 H# i: D
NMAKE : fatal error U1077: 'C:\Qt\2009.05\qt\bin\moc.exe' : return code '0x1'& M+ K9 L: G1 V Stop.
NMAKE : fatal error U1077: '"d:\Program Files\Microsoft V isual Studio 9.0\VC\BIN! u& u1 e" f7 D
\nmake.exe"' : return code '0x2'- r8 @/ P; \# L0 h2 b0 M
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2') E% r6 W; X% [/ [% g2 N* h
Stop.M0 Z9 N3 r ^( r' Y; c
) ~4 p! {- ^ W/ i: H
以上是出错代码,解决方法是将* c+ \- k. P& P- d# x( A3 N: X% ?2 K
3 ?$ }% k3 ^. o7 P. i: `) C
qt/src/script/tmp/moc/debug_shared/mocinclude.tmp! g7 F) L* N1 r
qt/src/script/tmp/moc/release_shared/mocinclude.tmp
! z6 B6 i( q# L
删除,然后继续编译。1 P" H% `& ?5 N& a p
2 H" y& S0 M0 b$ O
过了很长时间之后,在编译webkit部分的代码时,会发生错误,系统会停止编译w$ [( X) ?. G9 `" k! t
D:\tools\Qt\2010.05\qt\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\moc_Sock etStreamHandlePrivate.cpp(97) : error C2065: “QSslError”: 未声明的标识符
D:\tools\Qt\2010.05\qt\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\moc_Sock* q3 |; v- [3 S. e
etStreamHandlePrivate.cpp(97) : error C3861: “socketSslErrors”: 找不到标识符
正在生成代码...
NMAKE : fatal error U1077: “"D:\tools\Microsoft V isual Studio 10.0\VC\BIN\cl.EX
E"”: 返回代码“0x2”
Stop.: X b+ T- v. F4 E! i
NMAKE : fatal er ror U1077: “"D:\tools\Microsoft V isual Studio 10.0\VC\BIN\nmake
.exe"”: 返回代码“0x2”2 A( A" M u! y# B5 d* b5 ~' e( i
Stop., u0 j' Q9 ^' W5 K# _$ J) K
NMAKE : fatal error U1077: “cd”: 返回代码“0x2”4 z2 I( d( Z% C, l H! A$ f
Stop.
解决方法是将8 f$ b* n8 _- K+ ^
) q6 G( h7 a1 l
qt\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\mocinclude.tmp4 s7 B% U9 A5 m7 M5 w# Q2 y! X7 c
qt\src\3rdparty\webkit\WebCore\tmp\moc\release_shared\mocinclude.tmp" I2 P1 z; i( v
删除之后可以继续编译(重新执行nmake命令)- n$ N# m8 J1 C& j7 A
4 [" k6 N) W0 ]
编译成功后qt creator里面显示qt已经成为mscv版本而不是mingw32,但是使用vs2010插件时,仍然提示qt是mingw编译的,不知如何解决?