1. 程式人生 > >Qt5.8.0在msvc2015方式下的靜態編譯過程記錄

Qt5.8.0在msvc2015方式下的靜態編譯過程記錄

Qt 5.8.0在msvc2015方式下的靜態編譯記錄

本次記錄把Qt5.8.0原始碼在msvc2015community版下靜態編譯的過程。

  • 1、準備工作
  • 2、配置Qt的Makefile檔案
  • 3、編譯Qt庫
  • 4、配置Qt庫
  • 5、配置Qt Creator

第一步:準備工作


  • 下載Qty庫原始碼
    在Qt官網上下載相應版本的Qt庫原始碼。因為電腦上安裝的是VS2015community,所以下載名為 For Windows users as a single zip file (565 MB) (Info) 的檔案。
    Qt及原始碼下載
  • 下載Perl
  • 下載Ruby
注意:
1.Ruby要選擇安裝包版本
2.安裝Python、Perl、Ruby時注意勾選新增到環境變數PATH
3.檢測是否安裝成功:開啟CMD
輸入python

輸入perl -v
輸入ruby -v

第二步:配置Qt的Makefile檔案

1) 下載的Qt原始碼解壓到磁碟根目錄:如G:\

注意:如果原始碼解壓路徑過長,將導致編譯qtimageformats時出現無法開啟編譯器生成的檔案“”:Invalid argument的錯誤。

我的解壓路徑為:G:\qt_src_5_8_0

2) 進入解壓後的Qt原始碼資料夾下的 G:\qt_src_5_8_0\qtbase\mkspecs 資料夾下。

3) 再根據你安裝的Qt版本進入相應的資料夾下,我這裡是win32-msvc2015
進入到相應資料夾

4) 開啟資料夾下的qmake.conf

檔案,根據它include的內容再定位到相應的檔案。我這裡是上級資料夾下的common目錄下的msvc-desktop.conf檔案。
找到qmake.conf

找到相關檔案

5) 開啟對應的檔案後,找到以下編譯標誌:

QMAKE_CFLAGS_RELEASE = -O2 -MD
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MD -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MDd

將其中的MD全部修改為MT(就是將動態編譯修改為靜態編譯):

QMAKE_CFLAGS_RELEASE = -O2 -MT
QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO += -O2 -MT -Zi
QMAKE_CFLAGS_DEBUG = -Zi -MTd

注意:
Qt5.8.0有一個CPP檔案
qtbase\src\plugins\generic\tuiotouch\qtuiohandler.cpp
包含了非ASCII字元,需要另存一個帶BOM的UTF-8編碼檔案,替換原檔案。否則編譯會報錯。

6) 開啟VS自帶的命令提示符,在開始選單中找VS2015的資料夾。
開啟VS2015命令提示符

7) 在命令提示符中進入Qt原始碼目錄G:\qt_src_5_8_0
在命令提示符進入原始碼目錄

8) 輸入Configure命令:

configure -confirm-license -opensource -debug-and-release -static -force-debug-info -prefix "G:\msvc2015_static" -qt-sqlite -qt-pcre -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -qt-freetype -nomake tests -nomake examples

其中"G:\msvc2015_static"代表編譯完後的安裝目錄,此目錄不需要事先存在。這個執行不會花費很久時間。沒有報錯就下一步。

第三步:編譯Qt庫

1) 執行nmake命令。
nmake

注:此步大約會進行兩到三個小時。

2) nmake執行完畢之後,再輸入nmake install安裝。這個安裝實際上是一連串的檔案複製。

注:此步大約會進行二十到三十分鐘。

3) 執行完成後沒有報錯說明安裝成功,G:\msvc2015_static資料夾中即為生成的Qt靜態庫。

第四步:配置Qt庫

(未完待續……)