VS2010+win7+QT4.8編譯總結


一、配置與編譯QT。
qt-everywhere-opensource-src-4.7.4.zip
qt-everywhere-opensource-src-4.8.0.zip
這兩個文件是 QT 4.7 和 QT 4.8 的源文件,若需要在 VS2010中使用,需要先編譯。
方法:
1.解壓文件至目錄;
2.進入解壓的所在的目錄,設置如下環境變量:
SET QTDIR=目錄
SET PATH=%path%;目錄\bin
SET QMAKESPEC=win32-msvc2010 (VS2008則是 win32-msvc2008)
3.輸入編譯指令 configure -opensource -debug-and-release -platform win32-msvc2010
更完整的指令如下(添加了 MMX, SSE, SSE2, SQLite, Oracle, ODBC, OPENSSL 支持) :
( 指令假設 Oracle 的 OCI頭文件和庫文件均位於 F:\app\Administrator\... 目錄下,需要注意的需要使用 server 版本中的 oci, client中 OCI的LIB文件命名略有變化,會導致編譯時找不到符號 )
( -graphicssystem opengl 選項用於指定圖形系統使用 opengl 進行渲染 )
configure -platform win32-msvc2010 -debug-and-release -opensource -script -scripttools -shared -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -sse2 -mmx -sse -qt-sql-oci -qt-sql-odbc -plugin-sql-oci -plugin-sql-odbc -openssl -mp -graphicssystem opengl -I f:\app\Administrator\product\11.2.0\dbhome_1\oci\include -L f:\app\Administrator\product\11.2.0\dbhome_1\oci\lib\msvc
4.VS2010環境下,編譯時有可能碰到如下提示(4.7版無此問題):
(1)Perl not found in environment - cannot run syncqt.
解決方法:將 bin 目錄中的 syncqt 和 syncqt.bat 兩個文件改名或刪除即可。
(2)編譯 Webkit 時會碰到 U1077錯誤,導致編譯出錯,看輸出含義是說宏擴展后的字符串中包含有換行。
解決方法:打開<Qt Dir>\src\3rdparty\webkit\Source\WebCore\platform\DefaultLocalizationStrategy.cpp ,定位至 327行,改為: return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
注意第一個括號內look up 后的雙引號。

5.nmake,約需要數個小時;
此操作會生成大量的臨時文件,若執行如下操作或許會有更好的性能:
SET TEMP=R:\
SET TMP=R:\
6.備份 .qmake.cache 和 configure.cache,若不執行清理則無須備份;
7.執行如下命令清理:
(經實際測試,本步驟執行完成后會清理掉 src\corelib\global 目錄中的 qconfig.h 和 qconfig.cpp,)
(導致 QT項目不能正確編譯,因此不要執行。或是執行本命令之前將上述文件先保存至其他地方。)
nmake confclean
8.清理完成后將 .qmake.cache 和 configure.cache 移回原位,若不執行清理則無須本操作;
9.操作完成。
[我的實際測試中,如果執行了第6步到第9步,會導致新建的 QT項目不能正確編譯,所以不應該執行。]
二、配置VS2010的 QT開發環境
1.進入VS2010,選擇Qt菜單,Qt Option;
2.點 Add,添加 QT的安裝目錄,並取名,OK;
3.新建或導入 QT項目;
4.Pro是Qt自帶編譯器Qt Creator的項目工程文件,如果想使用VS2010開發則需要將原有項目的Pro導入到VS2010的項目文件中,可以使用菜單Qt-Open ;
5.完成。
三、批處理命令示意:
(編譯前最好先關閉殺毒軟件)
(批處理假設有內存虛擬盤,並且虛擬盤為 R:)
(本批處理會編譯 OCI與 ODBC支持,OCI編譯時需要用到 Oracle 的相關類,QT 目前不能完全支持 64位開發,要完成本次編譯需要使用 32位的 Oracle SRV或是 client.)
@echo off
set tmp=r:\
set temp=r:\
set qtdir=%cd%
set path=%path%;%qtdir%\bin
set qmakespec=win32-msvc2010
move %qtdir%\bin\syncqt %qtdir%\bin\syncqt.bak >nul
move %qtdir%\bin\syncqt.bat %qtdir%\bin\syncqt.bat.bak >nul
choice /c YN /M "src\3rdparty\webkit\Source\WebCore\platform\DefaultLocalizationStrategy.cpp 是否已經修改完成?"
goto startconf%errorlevel%
:startconf2
notepad src\3rdparty\webkit\Source\WebCore\platform\DefaultLocalizationStrategy.cpp
goto finish
:startconf1
configure -platform win32-msvc2010 -debug-and-release -opensource -script -scripttools -shared -fast -qt-sql-sqlite -plugin-sql-sqlite -no-qt3support -qt-zlib -qt-libpng -qt-libmng -qt-libtiff -qt-libjpeg -qt-style-windowsxp -qt-style-windowsvista -sse2 -mmx -sse -qt-sql-oci -qt-sql-odbc -plugin-sql-oci -plugin-sql-odbc -mp -graphicssystem opengl -I f:\app\Administrator\product\11.2.0\client_1\oci\include -L f:\app\Administrator\product\11.2.0\client_1\oci\lib\msvc
nmake
rem copy *.cache r:\ /y
rem nmake confclean
rem copy r:\*.cache . /y
:finish


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM