qt 4.5 與
visual studio 整合
本文主要講述將Qt
4.5與
Visual Studio 2008整合,同樣適用於Visual
Studio 2005, 2003。
Qt 4.5
雖然新增了LGPL協議,但這也阻礙了我們在VS中使用Qt。因為免費開源的版本只提供了GCC編譯好的二進位庫,而沒有VC編譯好的二進位庫,只有商業版本才有VS編譯好的針對Windows的DLL,lib等二進位庫(恩,可以理解)。
再者,VC編譯器比GCC
還是要強勁很多,並且調試器異常強大。Qt
Creator雖然很酷,目前還很粗糙。很多人也更為熟悉VS的介面。
下面我們就自己用VS編譯出二進位庫,然後就可以跟商業版一樣了。
不過,你也可以直接google“qt
4.5 編譯好”,找到很多人已經編譯好的二進位庫,下載下來直接用。下面的內容可以不看了^_^
1. 下載並安裝
qt-sdk-win-opensource-2009.01.exe,安裝到預設的
c:/qt/2009.01。它包含了MingGW和
Qt Creator,以及先行編譯好的二進位檔案(用GCC編譯的)。你可以直接使用Qt
Creator 開始開發工作,不需要任何額外的配置。
2. 將整個目錄
c:/qt/2009.01 拷貝一份到
c:/qt/4.5.0-vc。我們將會修改目錄c:/qt/4.5.0-vc,使用VC++來編譯出所需要的庫。這兩個目錄可以同時存在,Qt使用c:/qt/2009.01,Visual
Studio 使用
c:/qt/4.5.0-vc。
3. 修改
C:/Program Files/Microsoft Visual Studio
9.0/Common7/Tools/下的
vsvars32.bat,在環境變數PATH中添加Qt的目錄,如
c:/qt/4.5.0-vc/qt,在INCLUDE
添
加上c:/qt/4.5.0-vc/qt/include ,在LIB添加
c:/qt/4.5.0-vc/qt/include,如:
@set
PATH=C:/Qt/4.5.0-vc/qt;c:/Program Files/Microsoft Visual Studio
9.0/Common7/IDE;c:/Program Files/Microsoft Visual Studio
9.0/VC/BIN;c:/Program Files/Microsoft Visual Studio
9.0/Common7/Tools;c:/Windows/Microsoft.NET/Framework/v3.5;c:/Windows/Microsoft.NET/Framework/v2.0.50727;c:/Program
Files/Microsoft Visual Studio 9.0/VC/VCPackages;%PATH%
@set
INCLUDE=C:/Qt/4.5.0-vc/qt/include;c:/Program Files/Microsoft Visual
Studio 9.0/VC/ATLMFC/INCLUDE;c:/Program Files/Microsoft Visual Studio
9.0/VC/INCLUDE;%INCLUDE%
@set
LIB=C:/Qt/4.5.0-vc/qt/lib;c:/Program Files/Microsoft Visual Studio
9.0/VC/ATLMFC/LIB;c:/Program Files/Microsoft Visual Studio
9.0/VC/LIB;%LIB%
開啟一個cmd命令列視窗,把這個檔案拖過來執行,這樣,你開啟的cmd就具有上面設定的環境變數了,但是這些變數只針對你當前的cmd,不會更改本機配置,所以,不要關閉cmd視窗,你需要在這個CMD視窗中完成接下來的命令。
(網上很多沒有這一步,
會導致下面的configure失敗)
4. 執行
c:/>
cd c:/qt/4.5.0-vc/qt
c:/qt/4.5.0-vc/qt>
configure -no-sql-sqlite -no-qt3support -no-opengl -platform
win32-msvc2008 -no-libtiff -no-dbus -no-phonon -no-phonon-backend
-no-webkit
上面這行命令,你可以按自己的需要修改,但注意一定要指明
-platform
後的參數,指明想要配置成那個版本的VS。例如系想要編譯成VS2005(當然前提是你已經安裝了VS2005),就換成
win32-msvc2005。這一步會產生一個makefile供nmake編譯產生所有的庫。這一步要花點時間,大概30分鐘。
5. 輸入
nmake,斷行符號,開始編譯。這一步跟漫長,我的大概編譯了3個小時~~
注意:如果你是Windows
7下,這裡多半會失敗,因為Win
7
SDK有Bug,在binary沒有resouce地區的時候mt程式是不能把manifest添加到binary中的(參考:http://download.microsoft.com/download/8/8/0/8808A472-6450-4723-9C87-977069714B27/ReleaseNotes.Htm),所以我們需要做一些修改才行,
第一步,在CMD下執行如下命令
c:/qt/4.5.0-vc/qt>echo.>hello.rc
c:/qt/4.5.0-vc/qt>
rc.exe /r hello.rc
得到
c:/qt/4.5.0-vc/qt/hello.res 資源檔。
第二步,修改qmake設定檔,使得Makefile的連結命令中會把hello.res一併連結到binary中。修改mkspecs/win32-msvc2005目錄下的qmake.conf檔案第52行為
QMAKE_LFLAGS = /NOLOGO C:/Qt/4.5.0-vc/qt/hello.res
這樣任何link命令都必然會連結hello.res檔案。
然後才能輸入nmake開始編譯。
6.
安裝官方的VS外掛程式qt-vs-addin-1.0.0-beta.exe,
7. 啟動
Visual Studio,選擇菜單“Qt->Qt
Options”,在”
Qt Verions ”選項卡點擊
“Add”,Version
Name隨便填,例如
“qt4.5.0-vc”,路徑則輸入
“C:/Qt/4.5.0-vc/qt”。(網上的資料有說要建立環境變數QTDIR=
C:/Qt/4.5.0-vc/qt,我個人認為是不必要的)。
8. 現在你的Visual
Studio 完全具備了Qt的所有功能,建立一個Qt
工程編譯運行試一試!
(編譯好後,在VS下點擊Debug-Debug
without debuggine可以看見程式啟動並執行效果,不過
如果直接到debug目錄下雙擊這個exe檔案,會提示找不到QtCore4d.dll,這時你需要把C:/Qt/4.5.0-vc/qt/bin加入到PATH環境變數,這目錄下還有QtCore4.dll,都是上面編譯出來的)。
不過你現在的環境是整合了LGPL版Qt的VS,跟商業版的還是有點不同。例如Qt
Desiner(資源設計器)不是嵌入到VS得,需要通過菜單“Qt->Launch
Desiner”來執行(商業版直接雙擊.ui檔案就會啟動Qt
Desiner)。不過這無關緊要,只是多點幾下滑鼠而已。
點擊“Qt->Launch
Linguist”可以啟動Qt
Linguist,它是一款本地化工具,也十分有用。
參考資料:
How
to: Setup Qt 4.5 Visual Studio Integration
在Visual
Studio 2008中安裝Qt
4.5
【轉載】編譯VS的QT
在Windows
7 Beta x64下編譯64位Qt
4.5.0
原文連結