VS2008 Express 编译安装 QT4.5.3
2009-10-30 05:17
274 查看
适合需要 shared+static 共存的人参考,其余情况,官方手册应该是最好的。
VC最好从VC提供的控制台启动,自己打开的VC终端,可能会因为环境变量不全
引起编译错误,光设置PATH环境变量没有用的。建议执行一次 vcvarsall.bat 以
初始化环境变量。官方终端打开的是:
因你的VC安装目录而不同。参数除X86外,还有 amd64 x64 ia64 x86_amd64
x86_ia64等。
准备工作:
下载 VC++2008 SP1 英文 express 版, 中文版可能有问题,安装备用
下载 windows 版的 perl,当前最新版是 strawberry-perl-5.10.0.6
下载 QT4.5.3的源码,qt-all-opensource-src-4.5.3(不是sdk那个exe)
下载OpenSSL源码,当前最新版是 openssl-0.9.8k
第一部分:编译OpenSSL
安装perl
打开带有VC2008环境的console
进入到 openssl 源码树的目录
perl Configure VC-WIN32
ms/do_ms.bat
nmake -f ms/ntdll.mak
nmake -f ms/nt.mak
ntdll.mak是编译dll,nt.mak是lib,如果漏掉3,会报错。
第二部分:安装 shared build 的QT
新建 C:/Software/QT45/qt 目录,其它目录也可以,只要路径中不含空格或中文。
复制 源码目录下的 mkspecs 目录到新建的qt目录,否则会报错。
配置 shared 版:
之前 openssl 只是编译了一下,没有安装,include目录是空的,配置的时候,要
根据实际情况,给出正确的include和lib目录。-platform 参数指出了目标编译器,
在 mkspecs 下可看到非常多的编译器,有些编译器无法编译webkit组件,有些则
无法编译 phonon,vs2008是全部都可以的。
不打算开发 webkit 核心的浏览器人,建议不要编译webkit,此物极度耗时,体积
也不小光一个static配置的lib文件,release超过200M,debug接近500M。
隐藏参数 -nomake, 忽略某些buildpart,参考
tools/configure/configureapp.cpp 文件。以下6个buildparts:
libs, tools, examples, demos, docs, translations 可以忽略掉,
translations是语言文件,忽略的话,-prefix/bin下的工具就只有英文了。
完事后编译:
nmake
完事后安装:
nmake install
openssl 源码下找 libeay32.dll 和 ssleay32.dll ,复制到 -prefix/bin。
-prefix/bin 不会自动加入到PATH环境变量,需要的话自己设置。
至此,OpenSSL 目录可以删除。正式+调试 的动态编译版QT装完,占用磁盘379M。
若要卸载,直接删除 -prefix/ 目录。QT源码目录达4G, nmake distclean ,或整
个删除以节省空间。如需接着编译静态版,OpenSSL目录勿删。
发现安装后bug一个,原因未知,不确定是QT自身问题,还是安装方式造成的。
qt demo调用的是 examples/xxx/xxx/debug或者release下的exe程序,而现在
examples编译出的程序,都不在debug或者release目录,直接在对应源码根目录
下了,修改examples的pro文件可以修正错误。
第三部分:安装 static 版的QT
configure -static 只是静态链接QT的lib,仍然需要VC2008运行库,可以到微软
的相应网页下载。
静态,要彻底。在mkspecs目录,找到 win32-msvc2008,编辑qmake.conf,
将QMAKE_CFLAGS_XXXXXXX全改成静态。就是把MD改成MT,把MDd改成MTd。
源码目录下 mkspecs 和目标目录下mkspecs里的都要改,前者最后安装时会覆盖
掉后者。
根据qt官方文档,在重新configure的时候,必须先做些清理:
nmake distclean
以前的老版本是用 nmake confclean,它们的语义是不同的,纠缠这些蛛丝马迹
没有意义,我直接删除了源码目录,解压纯净的源码树来编译的,纯净的源码树,
有利于减少潜在编译错误。
这里只编译正式版,其它版的 configure 要作相应调整,-openssl-linked 表示
静态链接,运行时不需要带 openssl的 dll, -opensll 正好相反,运行时需要dll。
配置 static 版:
配置完后:
编辑 tools/xmlpatterns/makefile.RELEASE ,把gdi32.lib加上,否则
编译xmlpatterns时会报错。
编译:
nmake
安装:
nmake install
安装OpenSSL的库:
复制 d:/download/openssl-0.9.8k/out32/ 下的两个lib文件 -prefix/lib 下。
修正一些错误:
-prefix/lib/*.prl,QMAKE_PRL_LIBS 变量中,OpenSSL源码目录,QT自身的
源码,都要清除出去。前者会造成qmake生成的makefile依赖openssl目录,后者
可能造成QT依赖自身的源码树。工作量不小,几十个文件,慢慢改,我用的vim,
写个正则自动处理了。
第四部分:编写测试代码
test.cpp 如下:
test.pro如下:
预期的输出结果是
内容由mail.qq.com提供,可能会有所变化。
第五部分:测试 shared build 环境
C:/Software/QT45/qt/bin/qmake
nmake
运行,可能会报以下错误,别紧张,可能是找不到 openssl 的dll
QSslSocket: cannot call unresolved function SSLv3_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function ERR_error_string
可以复制前面提到的两个OpenSSL的dll文件,到temp.exe所在目录
第六部分:测试 static build 环境
C:/Software/QT45/qts/bin/qmake
nmake clean && nmake
运行看结果
第七部分:为vim添加QT类库的自动补全
先配置好vim,并且确保ctags.exe在PATH下能找到,然后:
生成了一个接近18M的tags文件,把这个文件复制到C:/Software/Qt45/
在vim的配置文件中,把 C:/Software/Qt45/tags 添加进 tags 变量,建议不要
这么做,因为QT的tags有18M,并非所有的项目都需要QT,可以绑定到快捷键,
需要的时候再打开QT自动补全。
VC最好从VC提供的控制台启动,自己打开的VC终端,可能会因为环境变量不全
引起编译错误,光设置PATH环境变量没有用的。建议执行一次 vcvarsall.bat 以
初始化环境变量。官方终端打开的是:
%comspec% /k ""C:/software/Microsoft Visual Studio 9.0/VC/vcvarsall.bat"" x86
因你的VC安装目录而不同。参数除X86外,还有 amd64 x64 ia64 x86_amd64
x86_ia64等。
准备工作:
下载 VC++2008 SP1 英文 express 版, 中文版可能有问题,安装备用
下载 windows 版的 perl,当前最新版是 strawberry-perl-5.10.0.6
下载 QT4.5.3的源码,qt-all-opensource-src-4.5.3(不是sdk那个exe)
下载OpenSSL源码,当前最新版是 openssl-0.9.8k
第一部分:编译OpenSSL
安装perl
打开带有VC2008环境的console
进入到 openssl 源码树的目录
perl Configure VC-WIN32
ms/do_ms.bat
nmake -f ms/ntdll.mak
nmake -f ms/nt.mak
ntdll.mak是编译dll,nt.mak是lib,如果漏掉3,会报错。
第二部分:安装 shared build 的QT
新建 C:/Software/QT45/qt 目录,其它目录也可以,只要路径中不含空格或中文。
复制 源码目录下的 mkspecs 目录到新建的qt目录,否则会报错。
配置 shared 版:
configure -debug-and-release -platform win32-msvc2008 -no-dsp -no-vcproj -no-qt3support -qt-libpng -qt-libjpeg -qt-libmng -qt-libtiff -qt-zlib -prefix C:/Software/Qt45/qt -openssl -I D:/download/openssl-0.9.8k/inc32 -L d:/download/openssl-0.9.8k/out32dll -nomake translations
之前 openssl 只是编译了一下,没有安装,include目录是空的,配置的时候,要
根据实际情况,给出正确的include和lib目录。-platform 参数指出了目标编译器,
在 mkspecs 下可看到非常多的编译器,有些编译器无法编译webkit组件,有些则
无法编译 phonon,vs2008是全部都可以的。
不打算开发 webkit 核心的浏览器人,建议不要编译webkit,此物极度耗时,体积
也不小光一个static配置的lib文件,release超过200M,debug接近500M。
隐藏参数 -nomake, 忽略某些buildpart,参考
tools/configure/configureapp.cpp 文件。以下6个buildparts:
libs, tools, examples, demos, docs, translations 可以忽略掉,
translations是语言文件,忽略的话,-prefix/bin下的工具就只有英文了。
完事后编译:
nmake
完事后安装:
nmake install
openssl 源码下找 libeay32.dll 和 ssleay32.dll ,复制到 -prefix/bin。
-prefix/bin 不会自动加入到PATH环境变量,需要的话自己设置。
至此,OpenSSL 目录可以删除。正式+调试 的动态编译版QT装完,占用磁盘379M。
若要卸载,直接删除 -prefix/ 目录。QT源码目录达4G, nmake distclean ,或整
个删除以节省空间。如需接着编译静态版,OpenSSL目录勿删。
发现安装后bug一个,原因未知,不确定是QT自身问题,还是安装方式造成的。
qt demo调用的是 examples/xxx/xxx/debug或者release下的exe程序,而现在
examples编译出的程序,都不在debug或者release目录,直接在对应源码根目录
下了,修改examples的pro文件可以修正错误。
第三部分:安装 static 版的QT
configure -static 只是静态链接QT的lib,仍然需要VC2008运行库,可以到微软
的相应网页下载。
静态,要彻底。在mkspecs目录,找到 win32-msvc2008,编辑qmake.conf,
将QMAKE_CFLAGS_XXXXXXX全改成静态。就是把MD改成MT,把MDd改成MTd。
源码目录下 mkspecs 和目标目录下mkspecs里的都要改,前者最后安装时会覆盖
掉后者。
根据qt官方文档,在重新configure的时候,必须先做些清理:
nmake distclean
以前的老版本是用 nmake confclean,它们的语义是不同的,纠缠这些蛛丝马迹
没有意义,我直接删除了源码目录,解压纯净的源码树来编译的,纯净的源码树,
有利于减少潜在编译错误。
这里只编译正式版,其它版的 configure 要作相应调整,-openssl-linked 表示
静态链接,运行时不需要带 openssl的 dll, -opensll 正好相反,运行时需要dll。
配置 static 版:
configure -release -platform win32-msvc2008 -no-dsp -no-vcproj -no-qt3support -qt-libpng -qt-libjpeg -qt-libmng -qt-libtiff -qt-zlib -prefix C:/Software/Qt45/qts -openssl-linked -I D:/download/openssl-0.9.8k/inc32 -L d:/download/openssl-0.9.8k /out32 -nomake examples -nomake docs -nomake demos -nomake translations -static
配置完后:
编辑 tools/xmlpatterns/makefile.RELEASE ,把gdi32.lib加上,否则
编译xmlpatterns时会报错。
编译:
nmake
安装:
nmake install
安装OpenSSL的库:
复制 d:/download/openssl-0.9.8k/out32/ 下的两个lib文件 -prefix/lib 下。
修正一些错误:
-prefix/lib/*.prl,QMAKE_PRL_LIBS 变量中,OpenSSL源码目录,QT自身的
源码,都要清除出去。前者会造成qmake生成的makefile依赖openssl目录,后者
可能造成QT依赖自身的源码树。工作量不小,几十个文件,慢慢改,我用的vim,
写个正则自动处理了。
第四部分:编写测试代码
test.cpp 如下:
#include <QSslSocket> #include <iostream> #include <QString> int main() { QSslSocket socket; socket.connectToHostEncrypted("mail.qq.com", 443); if (!socket.waitForEncrypted()) { std::cout<<"ERROR"<<socket.errorString().toStdString(); return false; } std::cout<<"Connect SUCC"<<std::endl; socket.write("GET / HTTP/1.1/r/n/r/n"); while (socket.waitForReadyRead()) std::cout<< socket.readAll().data(); }
test.pro如下:
TEMPLATE = app TARGET = DEPENDPATH += . INCLUDEPATH += . QT += network SOURCES += test.cpp CONFIG += console release
预期的输出结果是
Connect SUCC HTTP/1.0 200 OK Server: TWS Date: Sat, 03 Oct 2009 18:44:08 GMT Expires: Sat, 03 Oct 2009 22:44:08 GMT Cache-Control: max-age=14400 Content-Type: text/html Content-Length: 95 Last-Modified: Tue, 24 Mar 2009 16:03:37 GMT Age: 3230 X-Cache: HIT from m50.mail.qq.com Via: 1.0 m50.mail.qq.com (squid/3.0.STABLE13) Connection: close <html> <head> <meta http-equiv="refresh" content="0; url=/cgi-bin/loginpage"> </head> </html>
内容由mail.qq.com提供,可能会有所变化。
第五部分:测试 shared build 环境
C:/Software/QT45/qt/bin/qmake
nmake
运行,可能会报以下错误,别紧张,可能是找不到 openssl 的dll
QSslSocket: cannot call unresolved function SSLv3_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function ERR_error_string
可以复制前面提到的两个OpenSSL的dll文件,到temp.exe所在目录
第六部分:测试 static build 环境
C:/Software/QT45/qts/bin/qmake
nmake clean && nmake
运行看结果
第七部分:为vim添加QT类库的自动补全
先配置好vim,并且确保ctags.exe在PATH下能找到,然后:
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q C:/Software/Qt45/qt/include
生成了一个接近18M的tags文件,把这个文件复制到C:/Software/Qt45/
在vim的配置文件中,把 C:/Software/Qt45/tags 添加进 tags 变量,建议不要
这么做,因为QT的tags有18M,并非所有的项目都需要QT,可以绑定到快捷键,
需要的时候再打开QT自动补全。
相关文章推荐
- QT-4.4.1在VC++ 2005 Express环境下的安装,编译,配置
- 用VS2008编译的Qt程序 安装到电脑上显示 无法找到msvcr71.dll
- Qt4.7 嵌入式环境搭建之源码编译和安装
- qt4.6.0 下 vs2008编译
- vs2008中编译安装curl库
- CentOS编译安装NodeJS+Express
- Qt 4.8.2 VS2008 集成环境搭建过程中编译错误的解决办法
- Linux 下编译并安装配置 Qt (完整版)
- OSG-2.8.2在VS2008下的配置安装(介绍一个开源的三维渲染引擎的编译)
- vs2008 安装编译poco c++
- OSG-3.0.1在VS2008下的编译、配置与安装
- 在ubuntu9.04下安装QT4.5.3
- Linux编译安装Qt
- Qt Creator的安装与Qt交叉编译的配置
- linux 下安装编译配置 QT
- 【转】Gtk与Qt编译环境安装与配置
- MySQL的安装、编译Qt驱动和测试
- vs2008编译出来的程序不能运行或需要安装vcredist_x86.exe才能运行解决办法
- Linux 下编译并安装配置 Qt
- Linux 下编译并安装配置 Qt 全过程