我的個人博客:zhang0peter的個人博客
為什么要靜態編譯
在默認情況下,用QtCreator編譯程序時,使用的是動態編譯。編譯好的程序在運行時需要另外加上相應的Qt庫文件,一大堆dll文件。如果想將生成的程序連同所需要的庫一起完整地打包成一個可執行程序,那就需要使用靜態編譯。Qt官方不提供靜態編譯好的安裝包,所以需要我們在自己的電腦上靜態編譯。而且exe文件會比動態編譯的要小上很多。
1.源碼下載
Qt最新版5.12.0的源碼下載地址:qt-everywhere-src-5.12.0
選擇文件:
源代碼壓縮包文件789M,解壓后有2.48G的大小。
2. 編譯工具下載
Qt官方文檔要求編譯工具:Qt for Windows - Requirements Qt 5.12
打開源碼目錄下的README文件,查看Windows環境下編譯需要安裝的工具:
ActivePerl
ActivePerl下載地址:Download and Install Perl: ActivePerl | ActiveState
默認安裝時會添加ActivePerl到環境變量。
測試添加是否成功:
Python
下載Python,添加Python到環境變量。
測試添加是否成功:
Ruby
Ruby下載地址:RubyInstaller for Windows
安裝時勾選添加到環境變量的選項:
編譯環境選擇
在Windows上,有兩個預構建環境可供選擇:一個是MinGW,另一個是Microsoft Visual Studio(MSVC)。這兩個環境不兼容,無法混合。你必須選擇一個。
這兩者的區別如下:
當你的項目使用MinGW編譯的使用,想要用一個MSVC編譯生成的庫時就會有問題。使用MinGW編譯項目的時候,所使用的Lib也要是MinGW編譯的。如果你只是開發Window平台的軟件時,最好用Qt MSVC組合,這樣可以使用大量的第三方lib,還有很多的構建指令,畢竟window上MSVC才是王道。
我選擇MSVC,打開安裝VS時自帶安裝的MSCV:VS 2017的開發人員命令提示符
版權聲明:本文為博主原創文章,轉載請附上博文鏈接:Qt最新版5.12在Windows環境靜態編譯安裝和部署的完整過程(VS2017)
3.編譯
Qt編譯官方文檔:Building Qt Sources | Qt 5.12
在D盤新建一個目錄用來存放編譯好的內容:D:\qt
在VS 2017的開發人員命令提示符的命令行里進入Qt源代碼目錄:
1.修改源碼里的qtbase\mkspecs\common\msvc-desktop.conf文件
修改-MD為-MT
D的意思是動態編譯(dynamic),T的意思是靜態編譯(static)。
這一步官方教程沒有要求,但其他人的很多教程里都有寫,我就加上了
2.配置config文件:
配置命令如下:
configure.bat -static -prefix "D:\qt" -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
- 1
具體含義如下:
configure.bat -static //指明是靜態編譯 -prefix "D:\qt" //指明安裝的目錄 -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 //多核編譯
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
3.make
上面提到過在Windows上,有兩個預構建環境可供選擇:一個是MinGW,另一個是Microsoft Visual Studio(MSVC)。
我選擇的是msvc環境,使用命令nmake即可進行編譯。
nmake
- 1
但是MSVC自帶的nmake沒有多線程編譯功能,有一個替代功能的軟件jom可以進行nmake的多線程編譯。
jom的下載地址:Jom - Qt Wiki
運行命令:
D:\jom_1_1_3\jom.exe
- 1
make完成后源碼和編譯后的共有5.6G大小。
4.make install
因為jom是多線程的運行,但我需要用電腦,所以我使用nmake單線程install:
nmake install
- 1
命令結束的截圖:
QT的文件夾有3.3G的大小
5.添加到Qt Creator
①添加Qt Versions:
②新建一個構建套件,Qt版本選擇剛添加的靜態版,其他選項與動態版相同即可。
成功:
4.小結
我的個人博客:zhang0peter的個人博客
Qt5.12.0的靜態編譯的過程還算順利,需要注意的是編譯前要仔細閱讀官方文檔,畢竟很多教程不是最新的,但官方文檔一般都是最新的。