轉一篇比較詳細的vc編譯qt的文

來源:互聯網
上載者:User
轉自:http://www.pin5i.com/showtopic-qt-vs2005-vs2008-mingw-static-compilation.html

 

  編譯準備  下載NOKIA網站上的QT SDK,解壓或安裝到相關目錄。本文以QT 4.6.2為例,:http://get.qt.nokia.com/qt/source/qt-win-opensource-4.6.2-vs2008.exe或者直接下載源碼:http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.2.zip下載後安裝好的目錄結構為(假設安裝到D:\QT):├─share├─lib├─bin├─mingw└─qt    ├─translations(QT語言檔案目錄)    ├─tools(QT相關工具源碼目錄)    ├─src(原始碼目錄)    ├─qmake(qmake原始碼目錄)    ├─plugins(圖形,資料庫等外掛程式目錄)    ├─mkspecs(平台設定檔)    ├─lib(庫檔案)    ├─include(標頭檔)    ├─examples(樣本程式)    ├─doc(文檔)    ├─demos(示範程式)    ├─config.tests    ├─bin(命令列工具)    └─qtc-debugging-helperconfigure組態工具在qt目錄,以下假設QTDIR=D:\QT\SDK\qt,編譯前最好清空 lib,demos,examples,docs四個目錄,配置完成後在這幾個目錄下放一個空的Makefile檔案,避免make時報錯。   VS2005動態編譯  1.設定VS2005的環境變數2.設定目標平台set QMAKESPEC=win32-msvc20053.進入 QTDIR目錄回合組態,產生Makefile檔案configure -platform win32-msvc2005 -release -opensource -shared -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support  -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp -qt-style-windowsvista4. 運行nmake /I /K(附帶/I /K 選項可以避免出現錯誤時編譯自動終止,用於跳過錯誤繼續編譯其它檔案)經過這樣編譯的Qt庫不依賴mingwm10.dll,libgcc_s_dw2-1.dll,但依賴Qt庫的Dll檔案和微軟的CRT執行階段程式庫,使用此Qt庫編譯Windows平台下的程式,發布時需帶上用到的Qt連結庫Dll檔案和微軟的CRT執行階段程式庫Dll檔案。   VS2005靜態編譯  (VS2008 編譯同理,啟動相應的命令列,設定相應的目標平台,修改相應的設定檔)1.設定VS2005的環境變數2.設定目標平台set QMAKESPEC=win32-msvc20053.修改mkspecs/win32-msvc2005目錄下的設定檔 qmake.conf將下面兩行:QMAKE_CFLAGS_RELEASE    = -O2 -MDQMAKE_CFLAGS_DEBUG      = -Zi -MDd修改為:QMAKE_CFLAGS_RELEASE    = -O2 -MTQMAKE_CFLAGS_DEBUG      = -Zi -MTd(D是指dynamic,T是指static,d是指debug)4.進入QTDIR目錄,回合組態,產生 Makefile檔案set QMAKESPEC=win32-msvc2005configure -platform win32-msvc2005 -release -no-exceptions -opensource -static -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support  -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp -qt-style-windowsvista5.運行運行nmake /I /K經過這樣編譯的Qt庫不依賴於任何Dll檔案(如微軟的CRT執行階段程式庫),使用此Qt庫編譯Windows平台下的程式發布時不需要附帶任何額外的 Dll檔案。   MinGW靜態編譯  1.設定MinGW的環境變數2.設定目標平台set QMAKESPEC=win32-g++3.修改 mkspecs/win32-g++目錄下的設定檔qmake.conf將下面一行:QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc修改為:QMAKE_LFLAGS = -static -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc然後將下面一行:QMAKE_LFLAGS_DLL        = -shared修改為:QMAKE_LFLAGS_DLL        = -static4.QTDIR目錄,回合組態,產生Makefile檔案set QMAKESPEC=win32-g++configure -platform win32-g++ -release -no-exceptions -opensource -static -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support  -qt-zlib -qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -no-webkit -qt-style-windowsxp -qt-style-windowsvista5.運行運行mingw32-make -i -k(-i -k選項的含義與上面nmake的相同)經過這樣編譯的Qt庫,不依賴任何Dll檔案(如mingwm10.dll,libgcc_s_dw2-1.dll),使用此Qt庫編譯的 Windows平台下的程式發布時不需要附帶任何額外的Dll檔案。   編譯事項說明  編譯完成後可以刪除bin目錄中所有不是當前編譯日期的檔案。建議編譯前移除examples和demos檔案夾的所有檔案,避免重編譯這兩個檔案夾,加快編譯速度。另外,編譯命令請根據自己的實際情況配置,上面我的配置是(以VS2005靜態編譯為例):-platform win32-msvc2005 目標平台-release 關閉調試資訊-no-exceptions 除去異常支援-opensource 開源版-static 建立靜態庫-fast 快速配置,只產生Qt庫檔案及子目錄的Makefile檔案,其它的Makefile檔案後面再使用qmake產生-qt-sql-sqlite SQLite驅動支援-plugin-sql-sqlite  SQLite連結外掛程式支援-no-qt3support  不編譯Qt3相容庫-qt-zlib zlib庫-qt-gif -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg 圖形格式外掛程式庫-no-webkit 不編譯webkit,此選項可極大加快編譯速度,需要使用WebKit的可以刪除此選項-qt-style-windowsxp -qt-style-windowsvista 支援XP和Vista主題樣式注意:使用靜態編譯的程式通常較大,建議發布前使用UPX壓縮,一般可以減少至少50%的大小。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.