2012年9月28日 星期五

手動編譯QT於windows 7

此記錄分別說明QT在 Windows 7上編譯的方法,分別以MinGW、VS2008 x86、VS2008 x64 為主題說明。
1.首先下載QT source 4.8.2 因官方被Digia買走於(2012/9/18),網上FTP已不提供4.8.2版Source,但我因已經編譯成功的為4.8.2版,故設另一個下載點供下載。下載地址
2.將壓縮檔內資料夾qt-everywhere-opensource-src-4.8.2解壓縮到自己決定的位置,我的路徑為E:\Project\workspace\ 3.修正WebKit 程式碼無法編譯問題,此問題顯示如下。
DefaultLocalizationStrategy.cpp
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\yvals.h(21) : warning C4005: '_HAS_TR1' : macro redefinition command-line arguments :  see previous definition of '_HAS_TR1' platform\DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant

platform\DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected end of file in macro expansion
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.
2.1 修正檔案為DefaultLocalizationStrategy.cpp第327行
String DefaultLocalizationStrategy::contextMenuItemTagLookUpInDictionary(const String& selectedString)
{
#if defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)
    UNUSED_PARAM(selectedString);
    return WEB_UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");
#else
#if USE(CF)
    RetainPtr<cfstringref> selectedCFString(AdoptCF, truncatedStringForLookupMenuItem(selectedString).createCFString());
    return formatLocalizedString(WEB_UI_STRING("Look Up  “%@”", "Look Up context menu item with selected word"), selectedCFString.get());
#else
    return WEB_UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
#endif
#endif
}

改成
String DefaultLocalizationStrategy::contextMenuItemTagLookUpInDictionary(const String& selectedString)
{
#if defined(BUILDING_ON_LEOPARD) || defined(BUILDING_ON_SNOW_LEOPARD)
    UNUSED_PARAM(selectedString);
    return WEB_UI_STRING("Look Up in Dictionary", "Look Up in Dictionary context menu item");
#else
#if USE(CF)
    RetainPtr<cfstringref> selectedCFString(AdoptCF, truncatedStringForLookupMenuItem(selectedString).createCFString());
    return formatLocalizedString(WEB_UI_STRING("Look Up “%@”", "Look Up context menu item with selected word"), selectedCFString.get());
#else
    return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
#endif
#endif
}

MinGW 編譯
1.安裝MinGW參考此頁
2.建立qt_4.8.2資料夾到自己決定的位置,我的路徑為E:\Project\workspace\
3.建立MinGW資料夾到qt_4.8.2資料夾中
4.下載MinGW.bat到qt_4.8.2資料夾中
5.在系統內容,環境變數中加入C:\MinGW\bin;E:\Project\workspace\qt-everywhere-opensource-src-4.8.2;
6.開啟命令提示字元
7.輸入e: 執行
8.輸入cd Project\workspace\qt-everywhere-opensource-src-4.8.2 執行
9.輸入..\qt_4.8.2\MinGW.bat
10.輸入o(open source)
11.輸入y(yes),等待Makefile建立完成
12.輸入make
13.輸入make install

VS2008 x86 編譯
1.安裝VS2008,此部份略過
2.建立qt_4.8.2資料夾到自己決定的位置,我的路徑為E:\Project\workspace\
3.建立VS2008_x86資料夾到qt_4.8.2資料夾中
4.下載VS2008_x86.bat到qt_4.8.2資料夾中
5.在系統內容,環境變數中加入C:\MinGW\bin;E:\Project\workspace\qt-everywhere-opensource-src-4.8.2;
6.開啟Visual Studio 2008命令提示字元
7.輸入e: 執行
8.輸入cd Project\workspace\qt-everywhere-opensource-src-4.8.2 執行
9.輸入..\qt_4.8.2\VS2008_x86.bat
10.輸入o(open source)
11.輸入y(yes),等待Makefile建立完成
12.輸入nmake
13.輸入nmake install

VS2008 x64 編譯
1.安裝VS2008,此部份略過
2.建立qt_4.8.2資料夾到自己決定的位置,我的路徑為E:\Project\workspace\
3.建立VS2008_x64資料夾到qt_4.8.2資料夾中
4.下載VS2008_x64.bat到qt_4.8.2資料夾中
5.在系統內容,環境變數中加入C:\MinGW\bin;E:\Project\workspace\qt-everywhere-opensource-src-4.8.2;
6.開啟Visual Studio 2008 x64 Win64命令提示字元
7.輸入e: 執行
8.輸入cd Project\workspace\qt-everywhere-opensource-src-4.8.2 執行
9.輸入..\qt_4.8.2\VS2008_x64.bat
10.輸入o(open source)
11.輸入y(yes),等待Makefile建立完成
12.輸入nmake
13.輸入nmake install

PS:1.以上路徑設定請依喜好修改BAT檔內路徑以及輸出路徑,本日誌主要以架設[多種編譯檔案]為架構撰寫。
2.輸出路徑參數為[-prefix 輸出路徑]
3.如果想加速VS2008編譯在E:\Project\workspace\qt-everywhere-opensource-src-4.8.2\mkspecs\win32-msvc2008\qmake.conf 中的
QMAKE_CFLAGS            = -nologo -Zm200 -Zc:wchar_t-
後面加入
QMAKE_CFLAGS            = -nologo -Zm200 -Zc:wchar_t- -MP
以上部份轉載於
1.VC和MinGW编译Qt的方法
2.编译qt-win-opensource-4.8.2-vs2010中出现的一个bug
3.win7系统下64位Qt的编译
4.QT编译./configure参数的详细解释[新手充电必读]
5.使用 Visual C++ 2010 建置 Qt 4.6.3 6.[提问]Qt4.8.1编译安装最后出现问题

沒有留言: