前言
在開發過程中遇到Qt的bug,特別是QAccessibleWidget模塊內部崩潰的問題,官方的BugReport可能無法及時修復。為了不耽誤項目,決定自行修改Qt源碼並進行編譯。
環境搭建
在Windows 10專業版64位系統下,使用visual studio 2019作為編譯器。此外,利用git和小烏龜tortoiseGit進行版本管理。安裝時選擇64位且為LTS版本的ruby、python和perl,安裝路徑確保無中文或空格,以避免編譯時出現問題。
目標與依賴
目標是編譯Qt5.15.2版本,支持msvc2019編譯器的64位Windows環境。所需依賴包括ruby、python和perl,均從官網下載安裝包。安裝過程簡單,選擇「下一步」,確保「自動添加到系統環境變數」選項被選中。
Qt源碼獲取
Qt源碼可從官方網站下載頁面或github倉庫獲取。使用git clone或小烏龜下載至指定路徑,如「F:\qt\qt5」。下載完成後,通過小烏龜的右鍵菜單更新子模塊至tag 5.15.2版本。
編譯過程
在倉庫上一層目錄下創建bat腳本,引用vs編譯器環境變數並執行configure命令。配置項包括指定安裝路徑、使用開源協議、自動確認協議、指定庫類型、跳過某些模塊的編譯、開啟多進程編譯、只編譯release模式、優化文件尺寸等。編譯過程可能需要2個半小時左右,完成後執行nmake install命令進行安裝。
bug修復與測試
針對QAccessibleWidget模塊的bug,定位到問題根源並進行修改。將修改後的dll替換到已安裝的Qt庫中,程序正常運行且測試未再出現空指針錯誤。然而,只替換一個dll不可靠,需要確保編譯環境與官方一致。遇到的另一個問題是,替換dll後打包的程序在某些用戶電腦上啟動後界面無法正常顯示,這表明只替換dll可能不足以解決兼容性問題。最終,替換所有新編譯的庫,確保了程序的穩定運行。
② Qt 6.5.2 Creator MSVC 編譯器配置
對於Qt 6.5.2版本,MSVC編譯器的配置與網上文章有差異,下文詳細記錄。
環境為Windows 10,使用Qt Creator 11.0.2版本。Qt 6.5.2需要配合MSVC 2019。
直接下載MSVC 2019可避免安裝整個Visual Studio,節省資源。下載地址為:microsoft.com。
嘗試安裝VS Community 2019,但Qt Creator無法識別MSVC編譯器。
解決方法是僅下載MSVC,不安裝Visual Studio。安裝過程無需修改注冊表。
正確配置MSVC(2019)為Qt編譯器的詳細步驟可參考ld246.com文章。
解決方案是安裝Build Tools for Visual Studio 2019(版本16.11)。此工具包含獨立的MSVC編譯器、庫和腳本,比完整安裝VS更節省資源。
安裝完成後,確認目錄:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build"包含文件"vcvarsall.bat",問題解決。
至此,Qt Creator已經能自動檢測到MSVC 2019的編譯器。