天天看點

qt 靜态編譯,減少依賴庫

因為動态編譯,同時 要有很多依賴庫,是以隻能選擇靜态編譯;

環境:WIN7+QT5.9.5 ;

Qt官方不提供靜态編譯好的安裝包,是以需要我們在自己的電腦上靜态編譯。下載下傳最好下載下傳同樣版本的源碼;

時間大概 3個小時左右,視自己電腦組態确定;

一. 下載下傳源碼

Index of /official_releases/qt

qt 靜态編譯,減少依賴庫

二. 編譯工具下載下傳

ActivePerl

ActivePerl下載下傳位址:Download and Install Perl: ActivePerl | ActiveState

預設安裝時會添加ActivePerl到環境變量。

測試添加是否成功:

cmd 界面 執行: perl.exe -v

Python

下載下傳Python,添加Python到環境變量。

測試添加是否成功:

qt 靜态編譯,減少依賴庫

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 2013的開發人員指令提示符

qt 靜态編譯,減少依賴庫

解壓源檔案到目錄,SRC;

1.修改源碼裡的qtbase\mkspecs\common\msvc-desktop.conf檔案

修改-MD為-MT

qt 靜态編譯,減少依賴庫
qt 靜态編譯,減少依賴庫

D的意思是動态編譯(dynamic),T的意思是靜态編譯(static)。

2.使用 VS2013 X64 本機指令行工具執行:

首先,進入到源碼SRC 目錄 執行指令

configure.bat -static -release -platform win32-msvc -release -static -prefix "D:\Qt\Qt5.9.5-msvc2013-x64-static-release-full" -opensource -confirm-license -nomake examples -nomake tests -plugin-sql-sqlite -plugin-sql-odbc -qt-zlib -qt-libpng -qt-libjpeg -opengl desktop -mp
           

這個隻編譯了release 版本;

具體含義如下:

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 //多核編譯
           

 3.make

執行完上面的配置檔案,執行 nmake ,完成後,再執行 nmake install 安裝 到指定目錄;

4. 添加到Qt Creator

打開 Qt Creator,工具-》選項-》qt version  點選右邊添加

qt 靜态編譯,減少依賴庫

再選擇建構套件,點選右邊添加

qt 靜态編譯,減少依賴庫

五、使用

1.建立, 可以在導航過程中,選擇Kit的

qt 靜态編譯,減少依賴庫

2.如果是曆史項目,就需要在項目工程裡面配置。點選,【項目】-【Build & Run】,預設沒有的是灰色的,然後點選【靜态編譯】,表示使用該套件Kit

qt 靜态編譯,減少依賴庫

六.小結

 靜态編譯的過程還算順利,但編譯出來明顯比較大,本來 幾百K,可能編譯出來超過十幾M;

注意的是編譯前要仔細閱讀官方文檔,畢竟很多教程不是最新的,但官方文檔一般都是最新的。

繼續閱讀