windows下使用mingw和msvc靜態編譯Qt5.15.xx
-
下載並安裝相關依賴軟體
- Python version 2.7 https://www.python.org/downloads/ (python2.7.5及以上,pythone3.X不行)
- Ruby version 2.5.3 http://www.ruby-lang.org/zh_cn/downloads/
- Perl version 5.24.3 http://www.perl.org/get.html
- Visual Studio 2017
一般來說下載這三個工具就可以,記得要設定環境變數,當然你要編譯MSVC版的安裝Visual Studio2017,並且安裝它。要編譯mingw版本需要已經安裝Qt版本。
-
下載Qt官方原始碼qt-everywhere-src-5.15.xx.zip (根據需要編譯的版本進行下載),連結如下
http://download.qt.io/official_releases/qt/5.15/
-
開始編譯:
-
msvc2017編譯
-
開啟vs2017命令列工具,裡面配置了vs的環境變數,這裡不能用windows自帶的cmd終端代替。
-
切換到Qt原始碼路徑,執行命令:
configure.bat -static -prefix "D:\Qt\Qt5.15xx_msvc2017_static" -confirm-license -opensource -debug-and-release -platform win32-msvc -nomake examples -nomake tests -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -mp
configure.bat -static //指明是靜態編譯 -prefix "D:\Qt\Qt5.15xx_msvc2017_static" //指明安裝的目錄 -confirm-license -opensource //指明是開源版本的qt -debug-and-release //指明需要debug版和release版,可以單獨選擇release版 -platform win32-msvc //指明使用msvc編譯 -nomake examples -nomake tests //不編譯樣例 -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg //可選外掛 -opengl desktop -mp //多核編譯
生成makefile檔案之後就可以呼叫make編譯器進行編譯了,msvc版本的make編譯器是nmake。nmake是不支援多執行緒編譯的,單執行緒編譯的話時間長的令人髮指,推薦使用Qt在windows下專門的編譯器jom,QtCreator使用的就是jom編譯器,加上-j xx(電腦支援的執行緒數)爽歪歪。
Qt自帶的jom編譯器路徑是
D:\Qt\Qt5.14.2\Tools\QtCreator\bin\jom.exe
,如果不能識別jom命令請新增路徑到環境變數。如果是舊版本的Qt可能沒有帶jom,此時可以從Qt官網下載: -
接下來執行
nmake & nmake install
(使用jom的話用jom -j xx &jom -j xx install
代替)
接下來就是漫長的等待,最後編譯好的Qt版本在
-prefix
設定的目錄下,本人16執行緒全開,make的時間是20多分鐘,但是install的時間很長,可能是沒加-j
引數的原因? -
-
mingw編譯
-
開啟Qt的mingw命令列工具,
-
切換到Qt原始碼路徑,執行命令:
configure.bat -static -prefix "D:\Qt\Qt5.15xx_mingw_static" -confirm-license -opensource -debug-and-release -platform win32-g++ -nomake examples -nomake tests -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -mp
,這裡不截圖了,引數介紹同上,主要是修改編譯平臺win32-g++
. -
使用jom 編譯
jom -j xx &jom -j xx install
-
等待ing,a few moments later... 一個嶄新的Qt靜態版本誕生了
如何配置編譯好的版本到QtCreator網上的教程很多,這裡就不做搬運工了~
-