Qt編譯生成靜態庫(靜態編譯)

2021-06-18 18:18:02 字數 1953 閱讀 8033

開發環境:vs2008+qt4.8.4原始碼庫

其他環境請自己嘗試,原理應該是差不多的

qt編譯生成靜態庫1.

本教程只針對在win32平台,使用vs開發工具(例子以vs2008為例)

2.3.

解壓qt源**到目標目錄,如:

4.開啟」 mkspecs」目錄,找到目標平台的資料夾,如:」 win32-msvc2008」;開啟」 qmake.conf」檔案,找到下面語句:

qmake_cflags_release    = -o2 -md

qmake_cflags_release_with_debuginfo += -o2 -md -zi

qmake_cflags_debug      = -zi –mdd

改為qmake_cflags_release    = -o2 -mt

qmake_cflags_release_with_debuginfo += -o2 -mt -zi

qmake_cflags_debug      = -zi –mtd

5.在qt源**目錄下新建三個bat檔案,分別為environment.bat、configure.bat、compile.bat,分別功能為:設定環境變數、設定configure引數、開始編譯,三個檔案內容如下:

environment.bat:

set qtdir=%cd%

set path=%path%;%qtdir%/bin

set qmakespec=win32-msvc2008          // win32-msvc2008

根據實際平台進行修改

"d:/tools/microsoft visual studio 9.0/vc/vcvarsall.bat" x86       //」d:/tools/microsoft visual studio 9.0/vc/vcvarsall.bat」

根據安裝的

vs版本與路徑進行修改

configure.bat

configure -debug-and-release -opensource -static -fast -qt-sql-sqlite -qt-sql-odbc -qt-libpng -qt-libmng -qt-libjpeg -platform win32-msvc2008      //

根據需要自己填寫

, 可使用

configure –h

相看相關引數

compile.bat

nmake

nmake confclean               //

此句可寫可不寫 6.

開啟vs的命令提示,開始à程式àmicrosoft visual studio 2008àvisual studio toolsàvisual studio 2008 命令提示 7.

使用」cd」命令去到qt源**目錄,

8.依次執行下面命令(編譯前可以將源**下的example資料夾刪掉,加快編譯速度):

會提示是否接收license,輸入」y」後按回車即可

漫長等待,編譯完成後,檢視qt源**目錄下的」lib」目錄是否已生成字尾為」lib」的靜態庫 9.

編譯成功後,開啟vs新增qt的靜態版本。vs2008-》qt-》qt optaions-》qt versions-》add,將qt源**目錄的路徑新增進來(如f:\qt-opensource-4.8.4-static,這個路徑就是剛剛編譯好的靜態qt庫)

10.使用vs新建乙個qt工程,然後選擇qt的靜態版本,若是debug版本選擇專案屬性àc/c++à**生成à執行時庫à多執行緒除錯(/mtd);鏈結器à輸入à附加依賴項中加入」 ws2_32.lib winmm.lib imm32.lib」這三個庫à確定à編譯; 若是release版本選擇專案屬性àc/c++à**生成à執行時庫à多執行緒(/mt);鏈結器à輸入à附加依賴項中加入」 ws2_32.lib winmm.lib imm32.lib」這三個庫à確定à編譯;

qt靜態編譯

qt靜態編譯出現以下問題怎麼解決呢?d qt 5.9.0 qtbase src corelib global qlibraryinfo.cpp fatal error c1853 qmake pch.pch 預編譯標頭檔案來自編譯器的早期版本,或者預編譯頭為 c 而在 c 中使用它 或相反 nmak...

QT的靜態編譯

qt預設的編譯方式是動態編譯的,但是有時候你編寫的程式要發布出去,帶很多動態庫檔案是很繁瑣的,此時就需要靜態編譯你的程式,qt要實現靜態編譯必須庫檔案也是靜態編譯的,可以用這個命令編譯靜態庫 配置編譯選項 開啟 qtdir mkspecs win32 g qmake.conf qtdir 為qt庫所...

qt的靜態編譯

在預設情況下,用qtcreator編譯程式時,使用的是動態編譯。但是動態編譯執行時會依賴多種的dll庫檔案,在打包的過程中也需要帶上一大堆的dll庫檔案,否則無法執行。靜態編譯可以將需要的庫檔案直接載入到程式中,打包時不需要帶各種庫檔案,且可執行檔案exe會比動態編譯的要小很多。參考鏈結檢視具體完成...