使用VS2010编译QT

来源:互联网 发布:康奈尔大学知乎 编辑:程序博客网 时间:2024/04/20 11:52

首先不要使用中文目录,

 
发布QT程序时,为了使没有QT依赖库的环境中也能运行QT程序,这就需要静态编译你的QT程序。要达到这个目的,首先必须静态编译你的QT库文件

1 下载Qt的安装包和VS2010的Qt插件

2. 安装Qt Library, 注意不能装Qt SDK 我装了Qt SDK1.1.2之后,找不到configure程序,也不知道怎么回事。

3. 安装Qt的VS开发插件

4. 编译Qt

Qt默认使用mingw进行编译,如果要使用VS2010开发,需要将Qt重新编译。

进入开始菜单Microsoft Visual Studio 2010,Visual Studio Tools,Visual Studio Command Prompt (2010),需要注意的是,这里面必须是使用Visual Studio Command Prompt (2010),不能使用CMD的Dos窗口

进入Qt的安装目录后,执行CD Qt,进入Qt的根目录

image

运行命令 configure -platform win32-msvc2010


配置编译选项:Configure -debug-and-release -opensource -static-no-qt3support -mp -platform win32-msvc2010

-release  :编译版本

-static :静态编译,这个选项必须选择
后面的参数是选择性编译,为了加快编译速度(-no-去掉的模块名)

o(选择opensource模式)回车,Y(同意license)回车

image

接着就会自动配置Qt的编译环境,等配置结束后,运行nmake,回车,Qt就会开始漫长的编译过程,这段时间非常长,需要4个小时以上,大家可以在晚上睡觉的时候进行编译。

这里可以不使用nmake来编译,使用jom.exe,这是一个替代nmake的工具能够利用多核CPU的资源来并行编译,能缩短编译时间
jom -j 2   即可 2 表示2核 
下面是地址
http://qt.gitorious.org/qt-labs/jom   实践证明,这个不好用,编译过程中出错,还是老老实实的nmake吧


我在编译的时候有两次错误需要处理,解决方法如下

编译大概1个小时之后,出现:

01.api/qscriptextensionplugin.h(43): Error: Undefined interface
02.NMAKE : fatal error U1077: 'C:/Qt/2009.05/qt/bin/moc.exe' : return code '0x1'
03.Stop.
04.NMAKE : fatal error U1077: '"d:/Program Files/Microsoft Visual Studio 9.0/VC/BIN
05./nmake.exe"' : return code '0x2'
06.Stop.
07.NMAKE : fatal error U1077: 'cd' : return code '0x2'
08.Stop.
api/qscriptextensionplugin.h(43): Error: Undefined interface
NMAKE : fatal error U1077: 'C:/Qt/2009.05/qt/bin/moc.exe' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"d:/Program Files/Microsoft Visual Studio 9.0/VC/BIN
/nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

以上是出错代码,解决方法是将

qt/src/script/tmp/moc/debug_shared/mocinclude.tmp
qt/src/script/tmp/moc/release_shared/mocinclude.tmp

删除,然后继续编译。

过了很长时间之后,在编译webkit部分的代码时,会发生错误,系统会停止编译
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
etStreamHandlePrivate.cpp(97) : error C3861: “socketSslErrors”: 找不到标识符
正在生成代码...
NMAKE : fatal error U1077: “"D:/tools/Microsoft Visual Studio 10.0/VC/BIN/cl.EX
E"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “"D:/tools/Microsoft Visual Studio 10.0/VC/BIN/nmake
.exe"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “cd”: 返回代码“0x2”
Stop.

解决方法是将

qt/src/3rdparty/webkit/WebCore/tmp/moc/debug_shared/mocinclude.tmp
qt/src/3rdparty/webkit/WebCore/tmp/moc/release_shared/mocinclude.tmp
删除之后可以继续编译(重新执行nmake命令)

 

然后编译就可以正常了。

 

下面是配置vs2010

5.配置VS2010的Qt开发环境(VS2010最好是英文版本,Qt对VS2010中文版本可能支持的不好)

等Qt编译好后就可以配置VS2010的开发环境了,进入VS2010,选择Qt菜单,Qt Option,进入下图界面

image

  点击Add,添加Qt的安装目录

此时我又遇到了一个问题,QT in the given path was built using minGW

解决方法如下

删除lib目录下面的libqtmain.a andlibqtmaind.a 文件即可

清理前,切记把C:\Qt\4.7.3下面的 qmake.cache和configure.cache备份到别的地方,然后

nmake confclean 腾出空间。
最后再把C:\Qt\4.7.3下面的 qmake.cache和configure.cache 复制回远处

  如果不这样,安装 qt-vs-addin 后进行 Qt Versions 添加路径时将失败。



 

原创粉丝点击