Qt6.7.3靜態(tài)編譯
自從2022年與學(xué)長(zhǎng)們一起使用Qt嘗試開發(fā)軟件以來,我一直苦惱于Qt生成的桌面程序的龐大體積,因?yàn)閯?dòng)態(tài)鏈接庫的巨大,導(dǎo)致再簡(jiǎn)單的程序也有54.5MB以上的體積,如何解決這個(gè)問題呢?解決方法是靜態(tài)編譯Qt的源代碼。但由于當(dāng)時(shí)電腦比較垃圾,個(gè)人也沒研究透徹,靜態(tài)編譯過程中出現(xiàn)了各種問題導(dǎo)致失敗。今天終于解決了這問題,以此寫一篇博客供以后參考回憶。
一、下載與安裝必要文件和程序
1、下載源碼
靜態(tài)編譯是在Qt源代碼基礎(chǔ)上進(jìn)行的,因此本地必須要有Qt的源代碼。
也可以在
源碼的地址是archive/qt/6.7/6.7.3/single/qt-everywhere-src-6.7.3.zip
下載好后直接解壓到任意目錄即可
2、配置環(huán)境
(1)安裝Visual Studio
選擇社區(qū)版,勾選“使用C++的桌面開發(fā)”并執(zhí)行安裝即可

(2)下載并安裝cmake
選擇Windows x64 Installer即可
注意勾選添加環(huán)境變量

(3)調(diào)整ninja或安裝ninja
如果已經(jīng)安裝過Qt,可以在Qt目錄下Qt/Tools/Ninja找到

如果沒有安裝Qt,可以在https://github.com/ninja-build/ninja/releases下載
然后將其加入環(huán)境變量
(4)安裝Perl、Ruby、Python3
除了Python3是已知必須的以外,Perl和Ruby是我在其他博客中看到的,秉持著一次搞定的心態(tài),我全部安裝了,但是不能確定Ruby和Perl是否真的在靜態(tài)編譯中起到了作用(也許是某些歷史遺留問題)
這里不深入研究這個(gè)問題,能裝就都裝上。
Ruby下載地址: https://rubyinstaller.org/downloads/
Python下載地址: https://www.python.org/downloads/windows/
Perl下載地址: https://www.python.org/downloads/windows/
需要注意的是,Ruby最好選擇Ruby+Devkit版本。其中Ruby和Python都帶有自己的exe安裝程序,但是Perl下載下來是一個(gè)zip壓縮包,完全解壓到安裝目錄后,根據(jù)readme.txt中的內(nèi)容進(jìn)行設(shè)置。實(shí)際上運(yùn)行portableshell.bat即可。
二、進(jìn)行編譯
在解壓的源碼目錄下.\Qt\qt-everywhere-src-6.7.3\qtbase\mkspecs\common,找到msvc-desktop.conf

用記事本打開,修改內(nèi)容:


將其中所有MD修改為MT,其中D的意思是動(dòng)態(tài)編譯(dynamic),T的意思是靜態(tài)編譯(static)源碼。
然后選擇Visual Studio中的x64 Native Tools Command Prompt for VS 2022運(yùn)行:

切換到目錄.\Qt\qt-everywhere-src-6.7.3下,輸入命令:
configure.bat -static -static-runtime -prefix "E:\ProgramFile\Qt\qt6.7.3-static" -confirm-license -opensource -debug-and-release -platform win32-msvc -nomake examples -nomake tests -qt-zlib -qt-libpng -qt-libjpeg -opengl dynamic
其中,根據(jù)需要,修改雙引號(hào)內(nèi)的路徑,這是最終靜態(tài)編譯結(jié)果的生成地址,指令參數(shù)解讀如下:
configure.bat
-static -static-runtime //指明是靜態(tài)編譯
-prefix "E:\ProgramFile\Qt\qt6.7.3-static" //指明安裝的目錄
-confirm-license -opensource //指明是開源版本的qt
-debug-and-release //指明需要debug版和release版,可以單獨(dú)選擇release版
-platform win32-msvc //指明使用msvc編譯
-nomake examples -nomake tests //不編譯樣例
-qt-zlib -qt-libpng -qt-libjpeg //可選插件
-opengl dynamic
運(yùn)行指令后會(huì)得到系列cmake清單,此時(shí)只需要再次輸入
cmake --build . --parallel 6
其中--parallel 6是指開啟線程數(shù)為6的多線程編譯
接下來就是漫長(zhǎng)的等待,大概需要編譯19000項(xiàng)左右,個(gè)人用Intel Ultra5 125H跑了1個(gè)小時(shí)多一點(diǎn)。
編譯結(jié)束后,輸入:
ninja install
進(jìn)行安裝即可
三、配置Qt Creator
打開Qt Creator,進(jìn)入首選項(xiàng):

選擇【Qt版本】,點(diǎn)擊【添加】

選擇編譯結(jié)果的路徑中的qmake.exe即可:

接下來點(diǎn)擊【構(gòu)建套件】:


將【Qt版本】設(shè)置為剛剛添加的版本即可。
最終在構(gòu)建項(xiàng)目時(shí),不要選擇cmake,選擇qmake
Qt6.7.3_MSVC2022_64_static.zip
百度云盤鏈接: https://pan.baidu.com/s/1mIMtyKXDlzbr1g-CSwGGzg?pwd=bird 提取碼: bird
迅雷云盤鏈接:https://pan.xunlei.com/s/VOZ3Ztrx-7MvAfaJ7y8Zug_tA1?pwd=mu27#
本文來自博客園,作者:lamaper,轉(zhuǎn)載請(qǐng)注明原文鏈接:http://www.rzrgm.cn/lamaper/p/18673930

浙公網(wǎng)安備 33010602011771號(hào)