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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM