很多時候,我們發布程序的時候,在沒有qt依賴環境的地方,都需要將qt所依賴的動態庫加入項目同路徑.
這樣會讓強迫症的碼農感覺很麻煩.要想一個exe走天下,我們就會想到靜態編譯了.
下面是具體實現步驟:
1.編譯靜態版本的qt庫.
2.構建靜態編譯環境.
3.生成靜態版本exe
編譯靜態qt庫:
這里默認大家都已經安裝了qt. 我編譯的事mingw32版本的.msvc大體參考吧.
首先檢查自己是否安裝了peal和python以及gcc環境.
進入截圖所示窗口,分別輸入python gcc -v perl -v 看是否有對應的版本信息,
若無.請安裝對應的軟件並添加環境變量.安裝過程中可將自動添加環境變量勾選.
這一步好了之后我們開始配置編譯
在自己的qt環境里面新建mingw49_32_static文件夾.並從上圖的cmd窗口移動到新建的文件夾內執行下面的配置項 ps:路徑按實際值替換
H:\Qt5.6.3\5.6.3\Src\qtbase\configure -confirm-license -opensource -platform win32-g++ -debug-and-release -static -static-runtime -nomake examples -nomake tests -skip qtwebengine -prefix "H:\Qt5.6.3\5.6.3\mingw49_32_static" -opengl desktop -no-angle
大概解釋下上面配置的含義:
-confirm-license: 自動確認許可證(使用開源或是商業)
-opensource: 編譯並鏈接Qt的開源版本。
-platform win32-g++: 選擇的編譯版本
-debug-and-release: 兩個版本均可靜態編譯.
-static: 創建並使用qt靜態庫
-static-runtime: 靜態鏈接C/ c++運行時庫
-nomake examples: 不編譯例子
-skip qtwebengine: 從構建中排除qtwebengine模塊
-prefix: 部署目錄
-opengl desktop: 啟用 OpenGL 支持.不帶參數時,這將會嘗試自動檢測的 OpenGL ES 2.0 和更高版本,或常規的桌面版OpenGL.
-no-angle: 直接使用OpenGL的API進行渲染,需要顯卡廠商支持 OpenGL ES 2.0
如果需要添加或刪減更多功能.請遵循config文檔查閱即可.
這步沒出錯的話繼續執行下面的命令:編譯
mingw32-make -j2
后面j2表示雙線程編譯.視電腦好壞可多開線程提升編譯速度.
接下來執行安裝命令
mingw32-make install
這些都完成以后
用記事本打開 H:\Qt5.6.3\5.6.3\mingw49_32_static\mkspecs\win32-g++\qmake.conf
找到 QMAKE_LFLAGS 和 QMAKE_LFLAGS_DLL將后面都改成 -static
最后找到H:\Qt5.6.3\5.6.3\mingw49_32\bin\qt.conf 將靜態庫里面的H:\Qt5.6.3\5.6.3\mingw49_32_static\bin的qt.conf 替換保存
不出意外的話靜態版本編譯環境就完成了.
剩下的就是 打開Qt Creator -> 工具 -> 選項 -> 構件和運行 -> Qt Versions.配置我們編譯好的靜態環境. 可以愉快的靜態編譯了.