如果只是想要使用 static 版的 QT 我個人不推薦自己編譯,而是使用 MSYS2 安裝 QT static。
如果想要在其他環境執行動態編譯的 QT 執行檔就需要在那個環境中安裝 QT 依賴的函示庫或將執行檔用到的函示庫(dll)一起打包,編譯完後還需要自己把這些函示庫收集起來非常麻煩(不過自從有 windeployqt 就沒有這種困擾了)。靜態編譯會在編譯時將要用到的函式一起打包到執行檔中,在執行時就不會老是跳出找不到xxx.dll的 Error。以下講解如何在 Windows 自行編譯 QT 5.15.1 靜態編譯版本。
下載項目
MSYS2 開發環境搭建
MSYS2 集成了許多程式與函式庫,使用pacman套件管理系統就可以輕鬆設好開發環境,當然也包括了 QT 編譯所需要的gcc等工具。
這裡只做步驟的講解,較詳細的 MSYS2 的講解可以參考 MSYS2 簡單教學
MSYS2 安裝
到 官網頁面 下載最新版本安裝檔
安裝過程不用特別設定,一直下一步就行了。
當然也可以自己指定安裝位置
安裝完成後目錄結構如下圖所示
msys2 mingw32 mingw64 是用來快速開啟 MSYS2 環境的命令視窗
mingw32
: 32bits 的開發環境
mingw64
: 64bits 的開發環境
MSYS2 套件安裝
執行 msys2.exe
連點 msys2.exe 兩下開啟應用程式
更新 MSYS2
在視窗中輸入
pacman -Syu
重新啟動程式
在步驟2執行結束後會在最尾端看到如上圖的畫面,這段的意思是需要重新啟動來完成更新作業。
輸入 y
讓MSYS2 自己關閉後,再重新執行(自己關閉視窗重新執行也可以)
更新其他套件包
pacman -Syu
安裝編譯所需套件
pacman -S --needed mingw-w64-i686-toolchain mingw-w64-x86_64-toolchain base-devel
執行後會看到 輸入某個選擇(預設=全部選定):
直接按Enter即可 (甚麼都不輸入=預設=全部安裝)
如此一來 QT 的編譯環境就搭建好囉
編譯QT
下載原始碼(QT5.15.1)
只要你的解壓縮程式支援,選擇 .zip 或 .tar.xz 格式下載都可以。
解壓縮原始碼
使用你的解壓縮程式將剛剛下載下來的原始碼解壓縮
執行 mingw64.exe
我們接下來要編譯64位元的 QT 需要使用 MINGW64,如果是要編譯32位元則需要開啟 MINGW32
切換目錄到 QT 資料夾
cd /c/QT/qt-everywhere-src-5.15.1
輸入 configure 命令 設定 QT 編譯選項
./configure -confirm-license -opensource -release -static -optimize-size -platform win32-g++ -prefix "/c/QT/Qt5.15.1_MinGW64_static" -qt-sqlite -static-runtime -qt-pcre -qt-zlib -qt-freetype -qt-libpng -qt-libjpeg -opengl desktop -skip qtwebengine -skip qtlocation -skip qttools -no-feature-d3d12 -no-wmf -nomake examples -nomake tools OPENSSL_LIBS="-lssl -lcrypto -lcrypt32 -lgdi32 -lws2_32" -openssl-linked
這個步驟會先生成 qmake,然後檢查你的電腦環境
跑完後如果沒有出現 Error ,並且確定你要編譯的選項為 yes 後就可以繼續下一步
需要注意的事項:
- -prefix “/c/QT/Qt5.15.1_MinGW64_static”: prefix 後面的路徑請改為自己想要安裝的路徑
- 路徑的寫法: 假如你想要表達 D:/dir1/dir2 ,應該改為 /d/dir1/dir2
- qtlocation 不支援靜態編譯,雖然可以編譯QT時可以成功,但是編譯執行 example 的程式卻會報錯
開始編譯(這個過程很久,依 CPU 等級而定)
make -jn
( make 或是 mingw32-make 都可以)
指令中的 n 為線程數
你想用單線程跑 make
你想用2線程跑 make -j2
你想用4線程跑 make -j4
…
以此類推
要用多少線程依情況而定,你想要讓他全力跑,一般會設定你 CPU 的線程數。如果想要在編譯期間做其他事,則選擇把線程數設定少一點。
如果編譯跑完的結尾有 Error 的字樣
代表有地方沒有編譯成功,可能的原因很多產生的問題也千奇百怪,只能靠自己一步步回推看哪裡出了問題。
7.安裝
make install -jn
這裡的 n 和上一個步驟一樣是指線程數,依照自己的情況進行設定
執行完後就可以在剛剛設定的安裝目錄看到編譯完成的QT了
QT Creator 設定
打開設定面板 工具 > 選項
新增編譯器
左邊欄位點選 Kits,頁籤選擇 Compilers
右邊下選單 新增 > GCC > C
名稱: 可自訂
編譯器路徑: 設定為 mingw64/bin 裡面的 gcc.exe
右邊下選單 新增 > GCC > C++
名稱: 可自訂
編譯器路徑: 設定為b mingw64/bin 裡面的 g++.exe
設定好記得按右下角的 應用 (不然等等在其他頁面會找不到以新增的設定)
設定QT位置
頁籤選擇 QT Versions,點選右邊 新增 按鈕
選擇 qmake.exe 位置(會在 你編譯設定的安裝目錄/bin/qmake.exe)
版本名稱: 可自訂
設定好記得按右下角的 應用 (不然等等會找不到)
設定 QT 配置
頁籤選擇 Kits,點選右邊 Add 按鈕
名稱: 可自訂
Compiler C: 選擇剛剛新增的 C 編譯器
Compiler C++: 選擇剛剛新增的 C++ 編譯器
Debugger: 因為我們沒有編譯 Debug 版本,選擇 None 就好
Qt Version: 選擇剛剛添加的 QT 版本
全部設定好後記得按下確定
儲存喔