最近在学QT,如何静态编译链接是一个问题。
查询的资料如下:
1.下载:
在http://qt-project.org/downloads下载两个文件:
-
-
VS2010开发插件:Visual Studio Add-in 1.1.11 for Qt4
2.安装与修改:
安装Qt SDK,具体目录自己定,连续点下一步就行,但是文件目录最好别有空格,Qt貌似特别较弱,对空格和中文路径都不太支持。
编译就比较麻烦,因为Qt的library是基于minGW的,要在VS2010下使用就需要重新编译。
首先要修改Qt SDK的几处错误,不然会出让人无限抓狂的错误:
-
删除源码包中bin目录下的syncqt和syncqt.dat文件,如你不放心可将其改名或剪切到别的位置。如不修改将发生Perl not found in environment - cannot run syncqt 错误。
-
修改\mkspecs\win32-msvc2010下的qmake.conf文件,将其中的QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t-改成QMAKE_CFLAGS=-nologo -Zm200 -Zc:wchar_t
注意末尾的”-“号区别。如不修改将来如有项目使用wchar_t,qt却编译成wchar_t-,编译会导致连接错误,提示找不到Qwstring;(这部分很多人都说需要将QMAKE_CFLAGS_RELEASE,QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO,QMAKE_CFLAGS_DEBUG这3处后面的MD,MDd对应改成MT,MTD,以实现在没有VC库的电脑也能运行Qt程序,也有的人说不要改,经测试没有改是无法静态编译的)
修改src\3rdparty\webkit\Source\WebCore\platform下的DefaultLocalizationStrategy.cpp,定位到327行,将本行替换成return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString))。
三、编译(时间很长)
VS2010下纯静态编译,需要再VS2010的命令提示符下进行,我安装的是中文版visual studio2010,我的打开步骤如下(英文版自己对号入座):开始->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio 命令提示(2010),打开的窗口如下:
CD 进入到你安装QT的目录
接下来进行编译前的配置工作。执行配置,完整命令如下:
configure -debug-and-release -fast -static -platform win32-msvc2010 -no-qt3support -script -scripttools -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-sql-sqlite -plugin-sql-sqlite -qt-style-windows -qt-style-windowsxp -qt-style-windowsvista -qt-style-plastique -qt-style-cleanlooks -qt-style-motif -qt-style-cde -nomake demos -nomake examples -nomake docs –mp
执行配置,期间会询问是否采用open source(开源版本),还是商业版本,输入”o”选择开源版本;询问是否同意条款,输入”y”表示同意,开始执行配置过程,直到提示配置完成,可以下一步nmake,以开始执行编译。
输入nmake,执行编译,编译过程数个小时(具体看个人电脑配置)
编译成功结束,如同上图所示,可以关闭命令提示符了。
4、安装QT插件
一步安装到底,简单不再叙述
5、配置VS环境
搞定了~