本文將使用簡單的幾個步驟說明在vc2008和64位的操作系統下如何編譯安裝x64Qt軟件
首先必須保證你所使用的系統是64bit的操作系統,本次我們使用的系統是windows7 professional 64位操作系統
一、下載及安裝
1. 下載,直接找官網下載就可以了,我的是qt-win-opensource-4.8.4-vs2008.exe;安裝到D:\qt\4.8.4目錄下!
2. 設置環境變量:
我的電腦> 屬性> 高級> 環境變量> 用戶變量裏面設置幾個變量:
創建QTDIR值爲 D:\Qt\4.8.4
path中增加$QTDIR$\bin(如果沒有就創建)
創建QMAKESPEC值爲 win32-msvc2008,這個值還是根據你要生成的vs版本,6.0 使用win32-msvc;2003 使用win32-msvc.net; 2005就是win32-msvc2005; 2008就是 win32-msvc2008
最後爲了使的你剛纔修改的環境變量生效,重啓cmd,可以通過c:\>qmake -v來看你使用的qt版本。
3. 點擊開始》Microsoft Visual Studio 2008》Visual Studio Tools》VisualStudio 2008 x64 Win64 Command Prompt
現在開始安裝
首先進入你所在的Qt openresource 所在的文件夾
例如:D:\Qt\4.8.4
D:\Qt\4.8.4>onfigure -platform win32-msvc2008 -opensource-fast -qt-style-windowsxp -qt-style-windowsvista -no-qt3support -qt-sql-odbc-no-phonon -no-phonon-backend -no-script -no-scripttools -no-multimedia
-nomakeexamples -nomake demos
此時會有一個選項 是選擇商業版還是開源版,此處要選擇開源版,
只需輸入o 然後回車 此過程時間大概幾分鐘
接下來就開始
D:\Qt\4.8.4>nmake
最後這個過程時間較長,需要兩三個小時!
安裝
D:\Qt\4.8.4> nmakeinstall
二 編譯過程中遇到錯誤
利用VS2008對Qt4.8.4庫進行編譯,在編譯到某個文件時,總是報錯,提示VS的cl.exe和nmake.exe返回致命錯誤。錯誤羅列如下:
======================================================================
DefaultLocalizationStrategy.cpp
platform\DefaultLocalizationStrategy.cpp(327) :error C2001:
常量中有換行符
platform\DefaultLocalizationStrategy.cpp(327): fatal error C1057:
宏展開中遇到
意外的文件結束
DragData.cpp
DragImage.cpp
FileChooser.cpp
FileStream.cpp
FileSystem.cpp
GeolocationService.cpp
KillRingNone.cpp
KURL.cpp
Language.cpp
Length.cpp
LinkHash.cpp
Logging.cpp
MIMETypeRegistry.cpp
RuntimeApplicationChecks.cpp
SchemeRegistry.cpp
正在生成代碼...
正在編譯...
ScrollableArea.cpp
ScrollAnimator.cpp
Scrollbar.cpp
ScrollbarThemeComposite.cpp
ScrollView.cpp
SharedBuffer.cpp
SharedBufferCRLFLineReader.cpp
ThreadGlobalData.cpp
ThreadTimers.cpp
Timer.cpp
UUID.cpp
Widget.cpp
PlatformStrategies.cpp
LocalizedStrings.cpp
Cursor.cpp
正在生成代碼...
NMAKE : fatal error U1077:“"d:\Program Files\Microsoft Visual Studio 8\VC\BIN\
cl.EXE"”: 返回代碼“0x2”
Stop.
NMAKE : fatal error U1077:“"d:\Program Files\Microsoft Visual Studio 8\VC\BIN\
nmake.exe"”: 返回代碼“0x2”
Stop.
NMAKE : fatal error U1077: “cd”:
返回代碼“0x2”
Stop.
NMAKE : fatal error U1077: “cd”:
返回代碼“0x2”
Stop.
======================================================================
一直只關注到最後幾行的錯誤提示,其實編譯器已經調試到了錯誤地址,
platform\DefaultLocalizationStrategy.cpp(327) :error C2001:
常量中有換行符
是一個叫“DefaultLocalizationStrategy.cpp”的文件在325-327行中出現了問題,因此,順藤摸瓜,
在D:\Qt\qt4.8.4\src\3rdparty\webkit\Source\WebCore\platform\DefaultLocalizationStrategy.cpp中:
returnformatLocalizedString(WEB_UI_STRING("Look Up “%@”", "Look Upcontext menu item with selected word"), selectedCFString.get());
#else
return WEB_UI_STRING("Look Up “<selection>”", "LookUp context menu item with selectedword").replace("<selection>",truncatedStringForLookupMenuItem(selectedString));
正是語句中兩邊使用了錯誤的引號,導致了編譯不通過。改成:
returnformatLocalizedString(WEB_UI_STRING("Look Up""%@""", "Look Up context menu item with selectedword"), selectedCFString.get());
#else
return WEB_UI_STRING("Look Up""<selection>""", "Look Up context menuitem with selected word").replace("<selection>",truncatedStringForLookupMenuItem(selectedString));
即可。