開發環境: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會比動態編譯的要小很多。參考鏈結檢視具體完成...