Posted on 2007-06-26 14:22
chemz 閱讀(6331)
評論(8) 編輯 收藏 引用 所屬分類:
C++
Qt3.3.8編譯記錄
Qt3.3.8是Qt3系列中的最后一個版本,后續已經不再有更新版本了,雖然目前Qt4系列
的版本已經發布了Qt4.3.0版,但是基本上來說大多數的開發者還是處于Qt3的系列,同時也
因為在非Windows環境下(如:Linux、Unix等)大部分默認提供的Qt還是基于Qt3的版本,我
個人原來主要采用Qt3.3.4版本作為主要的開發版本,而在Qt3.3.8版以前的Qt3并沒有提供針
對msvc2005的編譯配置,所以基本上來講很難在2005環境下使用Qt3(雖然我采用msvc2003和
2005聯合編譯成功了Qt3,但還是很麻煩的)。這里專門介紹一下Qt3.3.8版在msvc2005下的
編譯過程,以避免出現錯誤。
1. 安裝Qt3.3.8的commercial版本的源代碼
不象Qt4那樣沒有提供安裝程序,Qt3還是有一個比較方便的安裝程序的。在安裝的過程中
需要注意的就是有如下幾點:
1.1. 必須要開啟一個console窗口,并將msvc2005的環境腳本vcvarsall.bat在該console
中運行以設置好環境變量,然后才能在該console窗口中運行安裝程序,如果僅僅
通過雙擊運行安裝程序會導致很多環境變量沒有設置并且無法自動識別目前的msvc
的版本,這樣一來安裝后的Qt的環境變量是不完整的;
1.2. 在選擇安裝目錄的配置頁面中,選擇跳過所有的構建過程,如果不選擇會在安裝后
自動進行源代碼的編譯構建,而這樣出來的庫基本上是不符合開發需要的;
1.3. 運行安裝程序后在Wizard的配置頁面中,必須選者debug版本,否則會導致無法生成
調試版本而影響開發調試;同時在配置頁面的高級標簽選項下可以更具需要進行具
體的細節配置,但一般情況下RTTI和exception時必須要選擇的,否則無法使用C++
的運行時和異常處理機制。
1.4. 安裝成功后,最好檢查一下在系統的環境變量中是否已經成功地配置了Qt需要的變
量,主要有三個地方需要注意:QTDIR是否正確的設置成了安裝路徑
(如:d:\Qt\3.3.8)、QMAKESPEC是否正確的設置成了win32-msvc2005,最后PATH
變量中是否正確的包含了Qt的bin路徑(如:d:\Qt\3.3.8\bin)。
2. 配置整個Qt工程
在console窗口中進入到安裝目錄下(如:d:\Qt\3.3.8),首先必須完成配置過程以便
生成需要的msvc2005的工程文件,鍵入如下的命令即可:
configure -redo
這樣一來會自動地生成所需要的工程文件、Makefile和qmake程序,但并沒有進行任何庫
的構建;
3. 編譯Qt庫
運行msvc2005開發環境,打開$(QTDIR)\src目錄下的qt-mt.vcproj工程并保存已形成
一個解決方案qt-mt.sln,然后在該解決方案中加入相同目錄下的qtmain.vcproj工程。
此時qt-mt和qtmain的項目配置是不可用的,需要進行很多的調整,下面分別就debug/release
兩個版本進行說明:
3.1. debug版
將“常規”選項中的“中間目錄”設置成為:“tmp\obj\debug_mt_shared\”;
將“C/C++”選項下的“輸出文件”選項中的“ASM列表位置”和“對象文件名”設置成為:
“tmp\obj\release_mt_shared”;
將“鏈接器”選項下的“常規”選項中的“輸出文件”設置成為:“$(QTDIR)\lib\qt-mtd338.dll”;
將“鏈接器”選項下的“調試”選項中的“生成程序數據庫文件”設置成為:“$(QTDIR)\lib\qt-mtd338.pdb”;
將“鏈接器”選項下的“高級”選項中的“導入庫”設置成為:“$(QTDIR)\lib\qt-mtd338.lib”。
3.2. release版
將“常規”選項中的“中間目錄”設置成為:“tmp\obj\release_mt_shared\”;
將“C/C++”選項下的“優化”選項中的“優化”設置成為:“最小化大?。?O1)”;
將“C/C++”選項下的“預處理器”選項中的“預處理器定義”中添加:QT_NO_DEBUG;
將“C/C++”選項下的“代碼生成”選項中的“運行時庫”設置成為:“多線程DLL(/MD)”;
將“C/C++”選項下的“輸出文件”選項中的“ASM列表位置”和“對象文件名”設置成為:
“tmp\obj\release_mt_shared”;
將“鏈接器”選項下的“常規”選項中的“輸出文件”設置成為:“$(QTDIR)\lib\qt-mt338.dll";
將“鏈接器”選項下的“輸入”選項中的“延遲加載的DLL”設置成為:
“opengl32.dll;comdlg32.dll;oleaut32.dll;winmm.dll;wsock32.dll;winspool.dll”;
將“鏈接器”選項下的“調試”選項中的“生成調試信息”設置成為:“是(/DEBUG)”;
將“鏈接器”選項下的“調試”選項中的“生成程序數據庫文件”設置成為:“$(QTDIR)\lib\qt-mt338.pdb”;
將“鏈接器”選項下的“高級”選項中的“導入庫”設置成為:“$(QTDIR)\lib\qt-mt338.lib”。
對于qtmain工程也需要做對應的配置:
3.3. debug版
將“常規”選項中的“中間目錄”設置成為:“tmp\obj\debug_mt_shared\”;
將“C/C++”選項下的“輸出文件”選項中的“ASM列表位置”和“對象文件名”設置成為:
“tmp\obj\release_mt_shared”;
將“管理員”選項下的“常規”選項中的“輸出文件”設置成為:“$(QTDIR)\lib\qtmaind.lib”;
3.4. release版
將“常規”選項中的“中間目錄”設置成為:“tmp\obj\release_mt_shared\”;
將“C/C++”選項下的“優化”選項中的“優化”設置成為:“最小化大小(/O1)”;
將“C/C++”選項下的“預處理器”選項中的“預處理器定義”中添加:QT_NO_DEBUG;
將“C/C++”選項下的“代碼生成”選項中的“運行時庫”設置成為:“多線程DLL(/MD)”;
將“C/C++”選項下的“輸出文件”選項中的“ASM列表位置”和“對象文件名”設置成為:
“tmp\obj\release_mt_shared”;
將“管理員”選項下的“常規”選項中的“輸出文件”設置成為:“$(QTDIR)\lib\qtmain.lib”;
完成了上述所有的配置后就要以進行編譯了,通過msvc2005的批生成完成所有工程所有
版本的編譯,編譯成功后會在$(QTDIR)\lib目錄下包含*.lib和*.dll同時在$(QTDIR)\bin
目錄下包含*.dll文件;
4. 編譯支持工具集
上面僅僅編譯了Qt的庫,對于開發使用的各種開發工具(如:designer、assistant等)
還需要進行編譯。同樣在前面的console窗口中進入到$(QTDIR)\tools目錄下運行如下的
命令行:
nmake
這樣就可以進行編譯了,至于Qt的例子工程可以考慮在需要哪一個例子的時候單獨的進
行編譯。
注:配置中的引號是不能夠輸入的,只能輸入引號里面的內容。