Visual Studio 2012 Build Qt with SSL

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/wesley8086/qt-ssl

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页