VS2012 + Qt 4.8.3 + OpenSSL

Qt应用中,经常有需要用到SSL的地方,例如XMPP等。Qt SDK中的Qt支持SSL,而单独下载的Qt library则一般不带SSL。如果需要SSL支持则需要我们自己编译。

1.安装Perl

机器上必须先安装Perl,无论编译OpenSSL还是Qt,都需要Perl的支持。Windows上可以安装这个http://strawberryperl.com/

2. 编译OpenSSL

到OpenSSL的网站http://www.openssl.org/source/下载最新的OpenSSL代码:openssl-1.0.1c

将代码解压后,根目录中有一个INSTALL.W32的文件,里面就是Windows下的编译方法。

启动VS2012工具命令行,在开始菜单Microsoft Visual Studio 2012\Visual Studio Tools这个目录下,该目录下有多个命令行,我选择的是“VS2012 x86 本机工具命令提示”这一个。

# 首先,切换到Openssl代码的根目录
> cd openssl\source\path

# 如果你安装了NASM,可以用汇编的形式编译,以加快Openssl的运行速度 # 执行下面两句
> perl Configure VC-WIN32 --prefix=d:\library\openssl > ms\do_nasm # 如果不想使用汇编编译,则执行下面两句就可以 # --prefix是指定你要把OpenSSL安装的位置 > perl Configure VC-WIN32 no-asm --prefix=d:\library\openssl > ms\do_ms # 开始编译 > nmake -f ms\ntdll.mak # 安装到prefix指定的目录中 > nmake -f ms\ntdll.mak install

3. 编译 Qt 4.8.3

http://qt-project.org/downloads下载Qt4.8.3的代码,注意不要下libraries,下source code.或者直接点这个下载qt-everywhere-opensource-src-4.8.3.tar.gz

3.1 修改MAKESPEC

Qt4.8.3中并没有VS2012的MAKESPEC。我们修改一下VS2010的MAKESPEC,用它来代替VS2012.

打开Qt代码根目录下的\mkspecs\win32-msvc2010\qmake.conf这个文件。

把其中的

QMAKE_COMPILER_DEFINES += _MSC_VER=1600 WIN32

替换为

QMAKE_COMPILER_DEFINES += _MSC_VER=1700 WIN32

3.2 修正Webkit编译的问题

Webkit库中有一个HashSet.h的文件会导致编译失败,Stack Overflow上有人给出了解决办法在这里
将Qt根目录下的src\3rdparty\webkit\Source\JavaScriptCore\wtf\HashSet.h这个文件替换为这个文件的内容。

另外一个编译的问题是src\3rdparty\webkit\Source\WebCore\platform\DefaultLocalizationStrategy.cpp这个文件提示“常量中有换行符”

// 打开这个文件会会发现第327行 “<selection>”的引号是全角的,而文件编码是UTF8,不带bomb的
return WEB_UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));

// 替换为
return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));

3.3 编译Qt

完成以上准备工作后就可以进入VS2012命令行进行Qt的编译工作了。

# 切换到Qt代码的根目录
> cd  qt\source\dir

# 执行configure
# 如果找不到configure,那你一定是切换到了错误的目录
# 最后的-I 和 -L 表示使用我们前面编译的Openssl库
> configure -mp -opensource -nomake demos -nomake examples -platform win32-msvc2010 -openssl -I D:\library\openssl\include -L D:\library\openssl\lib

# 在提示Copyright的时候选择 y

# configure完成后,如果一切正常,会提示你nmake,
# 这时nmake编译即可
> nmake

# 耐心等待一两个小时吧。编译时间到了。

4 测试一下

这里有一个使用Qt和Ssl,server和client端的例子 https://github.com/e7868a/qt-ssl

posted on 2012-11-15 19:36  __熊_  阅读(2809)  评论(6编辑  收藏  举报

导航