VS2015編譯Qt5.7.0生成支持XP的靜態庫(很不錯)

一.編譯工具html

1.VS2015python

編譯Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2)。由於Update補丁向下兼容,我用的是Visual Studio 2015 (Update3)。git

2.Pythonsql

我用的是python-2.7.9,去官網下個最新版的也行。windows

安裝後將C:\Python27(個人)添加到path環境變量ruby

3.Perl工具

我用的ActivePerl-5.16.2.1602,去官網下載個最新的也行。ui

安裝後將C:\Perl\bin(個人)添加到path環境變量。若是安裝時勾選了添加到環境變量的選項,就不用手動添加了。spa

參考連接:http://doc.qt.io/qt-5/windows-requirements.html.net

二.編譯準備

1.我以前安裝了qt-opensource-windows-x86-msvc2015-5.7.0.exe,而且安裝時勾選了包含源碼。將源碼D:\Qt\Qt5.7.0VS2015\5.7\Src拷貝到D盤根目錄。

2.在D盤新建D:\QtStatic\Qt5.7.0VS2015目錄,該目錄是Qt編譯後的安裝目錄。

3.在D盤新建D:\QtBuildScript目錄,裏面放置編譯腳本qt-build.bat。爲何要新建一個目錄來放置編譯腳本,而不將編譯腳本直接放置到源碼源碼目錄D:\Src中?這裏用到了影子編譯(shadow build)的技巧,詳見Qt5.7.0配置選項(configure options)。這樣生成的Makefile文件和編譯生成的中間文件都會在D:\QtBuildScript目錄中。

編譯腳本qt-build.bat以下所示:

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. REM ********** Initialize env for msvc 2015 cl compiler **********  
  2. SET PATH=C:\Windows;C:\Windows\system32  
  3. REM Set up \Microsoft Visual Studio 2015, where <arch> is amd64, x86, etc.  
  4. CALL "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86  
  5.   
  6. REM ********** Update include & lib to support xp win sdk 7.1A **********  
  7. SET PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%  
  8. SET INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%  
  9. SET LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;%LIB%  
  10. SET CL=/D_USING_V140_SDK71_;%CL%  
  11.   
  12. REM ********** 3rd party build tools binaries: ruby, perl, python **********   
  13. SET PATH=C:\Perl\bin;C:\Python27;%PATH%  
  14.   
  15. REM ********** Set up qt source env **********  
  16. SET _ROOT=D:\Src  
  17. SET PATH=%_ROOT%\qtbase\bin;%_ROOT%\gnuwin32\bin;%PATH%  
  18. REM Uncomment the below line when using a git checkout of the source repository  
  19. REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%  
  20. SET QMAKESPEC=win32-msvc2015  
  21. SET _ROOT=  
  22.   
  23. REM Generate makefile  
  24. ../src/configure.bat -confirm-license -opensource -platform win32-msvc2015 -debug-and-release -static -target xp -prefix D:\QtStatic\Qt5.7.0VS2015 -qt-sql-sqlite -qt-sql-odbc -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -no-qml-debug -no-angle -nomake tests -nomake examples -skip qtquickcontrols -skip qtquickcontrols2 -skip qtsensors -skip qtdoc -mp  

腳本主要分爲五部分,第一和第二部分是編譯器的選擇和對XP的支持,詳見下面兩個連接。

 

http://doc.qt.io/qt-5/windows-building.html

使用Qt5.7.0 VS2015版本生成兼容XP的可執行程序 

第三部分能夠不須要,由於以前已經將python和perl添加到path環境變量了。固然,保留第三部分也沒什麼問題。
第四部分設置Qt源碼的環境變量。

第五部分是配置選項,詳見Qt5.7.0配置選項(configure options),尤爲注意-target xp。../src/configure.bat表示執行上一級目錄裏src文件夾中的configure.bat腳本,即D:\Src目錄中的configure.bat腳本。那爲何不直接將configure.bat拷貝到D:\QtBuildScript目錄中呢?由於configure.bat必須在源碼目錄中執行。

4.指定靜態編譯

在上面的編譯選項中指定了靜態編譯(-static),可是這裏的靜態編譯是指:使用編譯完成並安裝的Qt編寫的應用程序(.exe),部署到XP或其餘系統時,能夠沒必要打包Qt庫,可是依然須要VS2015運行時庫。

若是想解除對VS2015運行時庫的依賴,也就是說生成的應用程序(.exe)部署到XP或其餘系統時,能夠雙擊直接運行。還須要進行以下操做。

Qt支持的平臺和編譯器都在qtbase/mkspecs目錄中,打開D:\Src\qtbase\mkspecs\win32-msvc2015中的qmake.conf配置文件,以下所示。

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. #  
  2. # qmake configuration for win32-msvc2015  
  3. #  
  4. # Written for Microsoft Visual C++ 2015  
  5. #  
  6.   
  7. MSC_VER                 = 1900  
  8. MSVC_VER                = 14.0  
  9. include(../common/msvc-desktop.conf)  
  10. load(qt_config)  

跳轉到了上一級目錄裏common文件夾中的msvc-desktop.conf配置文件。

 

打開D:\Src\qtbase\mkspecs\common中的msvc-desktop.conf配置文件,以下所示。


將高亮的三行改成。

 

[cpp]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. QMAKE_CFLAGS_RELEASE    = -O2 -MT  
  2. QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi  
  3. QMAKE_CFLAGS_DEBUG      = -Zi -MTd  

即MD(動態)改成MT(靜態)。

 

五.編譯

打開VS2015開發人員命令提示符。

執行腳本,開始配置。

幾分鐘後,提示輸入nmake。輸入nmake,而後回車,開始編譯。

六.安裝

大概三個小時左右(和機器配置有關),編譯完成。輸入nmake install,而後回車,開始安裝。

七.使用

將剛纔安裝的Qt靜態庫添加到Qt Creator。

新建一個基於窗口的應用程序test,選擇Qt靜態庫。

將生成的test.exe(無論是debug仍是release)拷貝到XP裸機中,雙擊直接能夠運行,以下圖所示。

http://blog.csdn.net/caoshangpa/article/details/53738393

相關文章
相關標籤/搜索