Qt最新版5.12.2在Win10環境靜態編譯安裝和部署的完整過程(VS2017)
一、為什麼要靜態編譯
用QtCreator編譯程式時,使用的是動態編譯。編譯好的程式在執行時需要另外加上相應的Qt庫檔案,一大堆dll檔案。如果想將生成的程式連同所需要的庫一起完整地打包成一個可執行程式,那就需要使用靜態編譯。Qt官方不提供靜態編譯好的安裝包,所以需要我們在自己的電腦上靜態編譯。而且exe檔案會比動態編譯的要小上很多。
二、原始碼下載
原始碼下載地址
開啟網址選擇一般選擇最新的版本,根據QT官方Qt5.12這一版有長期的技術支援,大約5年的樣子穩定性相對來說比較高,所以建議選擇這個版本的原始碼來編譯。 我編譯的時候才是Qt5.12.2,MD我前天剛編譯好今天就跟新到Qt5.12.3。傷不起啊。
三、安裝編譯工具
安裝的編譯工具有:
- pythone 這個工具強大沒朋友,感覺幹啥都有它
- Ruby 下載頁面有提示,一般下載官方推薦的穩定版
- Perl 下載最新版,沒毛病老鐵。
一般來說下載這三個工具就可以,記得要設定環境變數,當然你要編譯MSVC版的安裝Visual Studio2017,並且安裝它。
四、編譯環境選擇
這次我選擇編譯x86的靜態庫,原因很簡單。64位的系統可以執行32位的程式,但是反之則不可以,所以選擇編譯環境位x86
五、編譯引數配置
開啟原始碼所在位置( qtbase\mkspecs\common\msvc-desktop.conf )找到如圖所示位置檔案並修改儲存:
六、開始編譯
- 先開啟命令工具提示切換到原始碼所在位置
- 切換完成之後輸入如下命令(建議複製貼上):
configure.bat -static -prefix "D:\Qt\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\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 //多核編譯
make
在命令提示工具輸入:
nmake
此時原始碼開始編譯,編譯時長根據電腦的配置而異,我的電腦I7 7500U Inter240GSSD,大約從早上上班9點種開始編譯,在下午6點鐘下班的時候沒有編譯完,等第二天早上上班之後發現已經編譯完了,具體多長時間也不知道。樂觀12+小時以上。nmake install
安裝完成之後在命令提示工具輸入:
nmake install
此時編譯號的原始碼開始安裝,這個安裝時長大概2個小時左右吧。安裝完成之後就可以使用了。
七、開始使用
原始碼編譯安裝完成之後,需要安裝Qt Creator工具來使用我們剛剛編譯好的靜態QT。首先下載 [QtCreator](http://download.qt.io/official_releases/qtcreator/)
依然選擇最新版下載並安裝。安裝完成之後開啟開發工具我們需要配置一下才能使用。
** 注意事項:在
配置完以上內容就可以開始放心的編譯自己的程式。測試了一下空白程式在release模式下大概11M左右,還是蠻大的吧,優勢就是不必擔心丟失DLL檔案而報錯了。
八、注意事項
在新增Qt Versions時可能會報“qmlscene 未安裝”,出現黃色感嘆號。這是你只需將安裝Qt官方動態編譯的安裝包拷貝相應目錄裡面的“qmlscene.exe”到我們剛剛編譯安裝的
目錄下重新新增就ok了。 當你下載別人編譯好的靜態庫或者把自己編譯的庫移動了一個位置時Qt Versions 位提示錯誤“qt未正確安裝,請使用make install進行安裝”。不要怕其實不用重新編譯安裝的,只需在
目錄下新建一個文字文件“qt.txt”,然後輸入
[Paths]
Prefix=D:/qt/static
** 注意:輸入完之後儲存時選擇“ANSI”,另存為的時候有選擇提示選擇“ANSI”型別即可。最後將qt.txt改為qt.conf。 **
九、結尾
做好上述8個步驟之後我們的靜態環境就徹底搭建好了,然後就歡樂的碼程式碼吧。
附上自己編譯的靜態庫和編譯工具 :連結:https://pan.baidu.com/s/1E3Y40FCmzQQMz_doZ0OYcQ 提取碼:fme4