1. 程式人生 > >Qt工作歷程-在wince上的編譯Qt4.8.5

Qt工作歷程-在wince上的編譯Qt4.8.5

Qt5.1增加了很多東西,但貌似都是以動態和跨平臺為主的技術,看來Qt是真心想做大平臺,類似MTK這種資源和效能都不高的平臺,他開始覺得沒市場了吧。

根據官方的編譯介紹:

http://qt-project.org/doc/qt-4.8/install-wince.html

其實不外乎幾步:

第一步:設定系統變數

下載qt-everywhere-opensource-src-4.8.5.zip檔案,看清楚了,這是Qt的原始碼,不是SDK,地址如下

http://download.qt-project.org/official_releases/qt/4.8/4.8.5/qt-everywhere-opensource-src-4.8.5.zip

解壓後,筆者放到了 C:\Qt\ 內,把解壓的資料夾改成Qt485,然後把C:\Qt\Qt485\bin 加入系統PATH裡

第二步:修改mkspecs上的相關編譯函式

在C:\Qt\Qt485\mkspecs下面有一個叫wince60standard-armv4i-msvc2005資料夾,裡面是

CE_SDK= STANDARDSDK_600   # replace with actual SDK name
CE_ARCH= ARMV4I 

改成相對應的wince的SDK名稱和架構,名稱可以在C:\Program Files\Windows CE Tools\wce600下面找到

第三步:配置Qt,這裡需要清晰需求

開始->程式->Microsoft visual studio 2005->visual studio tool->command 視窗(類似cmd視窗,但帶了vs的編譯環境設定)

不斷cd到 C:\Qt\Qt485 

選擇1:

執行 configure -platform win32-msvc2005 -xplatform wince60standard-armv4i-msvc2005

這是比較普通的配置方式,但其實configure的學問太多了,詳細看前面介紹的官方文件,這裡補充一些其他

1.在C:\Qt\Qt485\src\corelib\global 裡面提供了很多qconfig-large.h qconfig-minimal.h 的類似東西這些其實就是qt自己幫我們配置好的一些最大,或者最小的配置項

這些東西,可以通過在configure 裡新增 -qconfig XXX.h 這樣的方式載入,其實類似 -D XXX -D XXX的一個綜合檔案。

2.關於Qt上的裁剪,都可以具體看C:\Qt\Qt485\src\corelib\global 裡面的 qfeatures.h 和 qfeatures.txt

選擇2:

這裡筆者提供一個自己實驗用的配置

configure -platform win32-msvc2005 -xplatform wince60standard-armv4i-msvc2005 -release -static -nomake examples -nomake demos -no-exceptions -no-qt3support -no-scripttools -no-openssl -no-opengl -no-webkit -no-phonon -no-sql-sqlite -D QT_NO_SOUND -D QT_NO_WIDGETS -D QT_NO_DIALOGS -D QT_NO_CURSOR

第四部:設定include,lib和path

set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ce\include;C:\Program Files\Windows CE Tools\wce600\XXX_SDK\Include\Armv4i
set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ce\lib\armv4i;C:\Program Files\Windows CE Tools\wce600\XXX_SDK\Lib\ARMV4I
set PATH=C:\Program Files\Microsoft Visual Studio 8\VC\ce\bin\x86_arm;%PATH%

裡面的XXX_SDK,請在自己的系統裡找

最後:nmake

對了,有些wince會跑不起來,串列埠輸出 could not resolve import CoCreateGuid,是因為wince的DOM被裁剪掉了,因此要加上:

CORE OS
CEBASE
Applications And Services Development
Component Services (COM and DCOM)
Component Object Model
COM
CoCreateGuid functionality for OLE32 

根據不同的編譯方式,C:\Qt\Qt485\lib 裡面,會有不同的庫,執行Qt程式,在板子上放上程式,和這些庫(靜態除外)。