Posted on 2019-03-08 14:30
宋鵬 閱讀(711)
評論(0) 編輯 收藏 引用 所屬分類:
Qt
《QT_VS2005_CE6.0_開發環境架設》
1、基礎環境:
操作系統:Windows XP
編譯器:(1)VS2005 VC環境 (2)VS2005 SP1
(SP1 必須有,以提供CE平臺的支持,沒有的話,Arm Emulator的程序編譯不過,模擬器也報錯“EmulatorStub.exe嚴重錯誤”)
QT版本:qt-everywhere-opensource-src-4.8.6.zip
CE SDK:ARM Emulator
2、安裝步驟:
(1)把QT源碼解壓到E:\QT\4.8.6\CE6.0\Emulator
Tim:個人推薦根目錄,不帶任何下劃線、空格等幺蛾子,防止出錯。。
Tim:絕對不能帶下劃線:
公司電腦上的目錄,起名帶個下劃線"4.8.6_ArmEmulator",結果VS2005創建工程失敗,說缺少平臺支持。。
Tim:也最好位于C盤,我把家里電腦的編譯版本,放到公司電腦的C盤,創建項目成功,原來的公司版本在E盤,會失敗。。不知道是不是錯覺。。
(2)進入“Visual Studio 2005 命令提示”
位置是“開始菜單->所有程序->Microsoft Visual Studio 2005->Visual Studio Tools->Visual Studio 2005 命令提示”。。
然后切換到編譯目錄:E:\QT\4.8.6\CE6.0\Emulator
(3)執行以下命令:
configure -platform win32-msvc2005 -xplatform wince60standard-armv4i-msvc2005
①如果想節省時間,部分編譯:
[-debug-and-release] 編譯和鏈接兩個版本的Qt
[-nomake examples]
[-nomake demos]
[-nomake docs]
[-no-multimedia]
[-no-phonon]
[-no-phonon-backend]
[-no-media-backend]
[-no-audio-backend]
[-no-openssl]
[-no-gtkstyle]
[-no-svg]
[-no-webkit] 是否編譯Web相關的一些QT子庫,加上這個可以省不少編譯時間,就看你是否準備用這些庫了。
[-no-javascript-jit]
[-no-script]
[-no-scripttools]
[-no-sql-sqlite]
[-no-declarative]
[-no-declarative-debug]
Tim:以上可選項均未試驗。。
Tim:
又抄來一個編譯WIN32 VS2005設置的:
configure -fast -platform win32-msvc2005 -nomake examples -nomake docs -nomake demos -no-webkit -no-phonon -no-phonon-backend -no-multimedia
Tim:
4.8.6版的,不管怎么編譯,都會出錯。。
①第一個錯誤,修改如下:
qclipboard_win.cpp 第306行:
把出錯的CheckRemoteDebuggerPresent,通過版本判斷的方式,不編譯進來。。
#if defined(_MSC_VER) && _MSC_VER <= 1400
return false;
#else
........................
CheckRemoteDebuggerPresent(processHandle, &debugged);
#endif
②第二個錯誤:
繼續 nmake 遇到第二個錯誤
platform\DefaultLocalizationStrategy.cpp(327) : error C2001: newline in constant
platform\DefaultLocalizationStrategy.cpp(327) : fatal error C1057: unexpected end of file in macro expansion
這個錯誤的原因是因為代碼里面的非英文的引號造成的。
原始的錯誤代碼如下:
return WEB_UI_STRING("Look Up “<selection>”", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
大家注意 <selection> 單詞前后的引號。就是它造成編譯報錯。修改成下面的代碼
return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
Tim:也就是將selection兩側的中文引號那里改成上文的樣子,。。奇怪老外也用這種引號么。。
(4)configure之后設置環境變量:
①使用Arm Emulator:
set INCLUDE=C:/Program Files/Microsoft Visual Studio 8/VC/ce/include;C:\Program Files\Windows CE Tools\wce600\ARM_Emulator\Include\Armv4i
set LIB=C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/armv4i;C:/Program Files/Windows CE Tools/wce600/ARM_Emulator/Lib/armv4i
set PATH=C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_arm;%PATH%
②如果使用S2416的SDK:
set INCLUDE=C:/Program Files/Microsoft Visual Studio 8/VC/ce/include;C:\Program Files\Windows CE Tools\wce600\SBC2416\Include\Armv4i
set LIB=C:/Program Files/Microsoft Visual Studio 8/VC/ce/lib/armv4i;C:/Program Files/Windows CE Tools/wce600/SBC2416/Lib/armv4i
set PATH=C:/Program Files/Microsoft Visual Studio 8/VC/ce/bin/x86_arm;%PATH%
執行:
nmake
Tim:我下載的源碼4.8.6在configure之后,出現讓直行:setcepaths.bat wince600standard-armv4i-msvc2005 && nmake的提示,我估計不用設置上述環境變量,也有可能可以成功編譯,但不冒那個險,直接按照文章推薦的步驟來。。
Tim:我運行setcepaths.bat,結果沒有那個SDK只有wincewm60standard-armv4i-msvc2005,而且那個BAT里面,只是運行了check sdk的動作。。所以結論是按照推薦文章指定SDK的路徑,nmake應該就可以。。
Tim:用作者的方案,Nmake編譯成功。。
(5)安裝qt-vs-addin:
安裝“qt-vs-addin-1.1.10.exe”。。
Tim:“qt-vs-addin-1.2.0-opensource.exe ,就開始不支持VS2005。。”無語。。
(6)修改SDK的名稱:
編輯" C:\QT\CE6.0\4.8.6\mkspecs\wince60standard-armv4i-msvc2005\qmake.conf "。。
將里面的
CE_SDK = STANDARDSDK_600
變更為
CE_SDK = ARM_Emulator
Tim:因為原始編譯的SDK環境,它名稱叫做"wince600standard-armv4i-msvc2005",Arm Emulator的庫跟這個環境也是一樣的,但是名稱不一樣,Qt插件會報錯。。
(7)包含環境變量:
①Arm_Emulator的話:
在VS2005 -> Tool -> Options -> VC++ Directories -> Arm_Emulator里面:
Include增加:" C:\QT\4.8.6\CE6.0\Emulator\include "。。
Library增加:" C:\QT\4.8.6\CE6.0\Emulator\lib " 。。
Tim:我一開始就沒包含,結果編譯別人的代碼,報錯沒有" QtSql "。。
②WIN32編譯的話:
在VS2005 -> Tool -> Options -> VC++ Directories -> Win32里面:
Include增加:" C:\QT\4.8.6\WIN32\include "。。
Library增加:" C:\QT\4.8.6\WIN32\lib " 。。
Tim:
為了讓Visual Assist更好的識別QT的函數名、類名,最好在VS2005里面多添加一些目錄如:
C:\QT\4.8.6\WIN32\src
C:\QT\4.8.6\WIN32\include\Qt
C:\QT\4.8.6\WIN32\include\QtCore
C:\QT\4.8.6\WIN32\include\QtGui
(8)開啟Arm Emulator:
Tool -> Connect to Device -> Arm Emulator Device。。
(9)新建一個QT工程,編譯、運行:
開啟VS2005 -> File -> New -> Project -> Qt4 Projects -> Qt Window CE Application -> 都選默認設置,然后編譯、部署、執行,最后成功在Arm Emulator里面彈出個對話框來(OK)。。
Tim:看到部署的時候,用了VS2005的庫(msvcr80d.dll),還有QT的兩三個庫(QtCored4.dll、QtGuid4.dll什么的)。。
(10)編輯*.ui文件,設計界面:
安裝" qt-creator-opensource-windows-x86-3.3.0.exe ",才能打開" *.ui "文件,從而變更界面。。
Tim:看了下.ui文件其實是一個xml結構的文檔。。
Tim:
" qt-creator-opensource-windows-x86-3.0.0.exe " Based on Qt5.2.0 ( MSVC2010,32 bit )。。
" qt-creator-opensource-windows-x86-3.3.0.exe " Based on Qt5.4.0 ( MSVC2010,32 bit )。。。。