最近有一些比较久远的机器,需要做升级处理,由于原来很多功能都没有,现在新产品基本都是基于QT开发的,所以就想把现有的QT程序移植到WINCE6上,于是在网络上搜了一下,发现在“远古”时期(现在使用WINCE平台的人不多了)还真有很多人这样做过。下面就将移植过程做一个记录。
https://download.qt.io/archive/qt/4.8/4.8.6/
https://download.qt.io/archive/qt/4.8/4.8.6/
https://download.qt.io/official_releases/vsaddin/
5.安装一个WINCE6 SDK,我这里直接安装的是我们定制SDK,或者学习用,直接用自带的SDK也可以。
进入QT4.8.6的源目录下,配置WINCE6 ARMV4i的环境:
打开配置文件:mkspecs\wince60standard-armv4i-msvc2005\qmake.conf
将其中的SDK名称替换成自己的SDK,比如我们用的是SDK是XXX_CE60_SDK_V21
CE_SDK = SAIO_CE60_SDK_R21 # replace with actual SDK name
CE_ARCH = ARMV4I
下面在QT4.8.6源码根目录下输入命令开始配置,注意configure可以看作是一个exe配置小工具,其后跟的是参数,具体不详细说明了,主要是平台相关,以及忽略一些不需要的模块(不会编译,可以加快编译速度)。
D:\Program Files (x86)\Microsoft Visual Studio 8\VC>cd D:\qt-everywhere-opensour
ce-src-4.8.6
D:\qt-everywhere-opensource-src-4.8.6>configure -no-webkit -nomake docs -nomake
demos -nomake examples -platform win32-msvc2005 -xplatform wince60standard-armv4
i-msvc2005
Which edition of Qt do you want to use ?
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.
回车后开始配置Qt,license选择o,之后选择y
配置成功后的部分配置输出信息:
main.cpp
cesdkhandler.cpp
Generating Code...
link /LIBPATH:"d:\qt-everywhere-opensource-src-4.8.6\src\tools\bootstrap
\release" /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MA
NIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='
6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*
'" /MANIFEST /MANIFESTFILE:"tmp\obj\release_shared\checksdk.intermediate.manifes
t" /OUT:..\..\bin\checksdk.exe @C:\Users\ADMINI~1\AppData\Local\Temp\nmBC6.tmp
mt.exe -nologo -manifest "tmp\obj\release_shared\checksdk.intermediate.m
anifest" -outputresource:..\..\bin\checksdk.exe;1
Qt is now configured for building. To start the build run:setcepaths.bat wince60
standard-armv4i-msvc2005 && nmake.
To reconfigure, run 'nmake confclean' and configure.
D:\qt-everywhere-opensource-src-4.8.6>
到这里基于wince arm平台的配置就配置好了,下面开始基于这个平台编译。
查看当前可用的SDK:
D:\qt-everywhere-opensource-src-4.8.6>checksdk -list
Available SDKs:
SDK Name: Pocket PC 2003 (ARMV4)
SDK Name: Smartphone 2003 (ARMV4)
SDK Name: Platform Builder (_TGTCPU)
SDK Name: XXX_CE60_SDK_V21 (ARMV4I) //这里可以看到我们自己的SDK,上面是VS自带的。
D:\qt-everywhere-opensource-src-4.8.6>
在D:\qt-everywhere-opensource-src-4.8.6\bin>目前下修改setcepaths.bat,添加如下自定义SDK信息:
ELSE IF "%1" EQU "**wince60standard-armv4i-msvc2005**" (
checksdk.exe -sdk "**XXX_CE60_SDK_V21 (ARMV4I)**" -script
tmp_created_script_setup.bat 1>NUL
tmp_created_script_setup.bat
del tmp_created_script_setup.bat
echo Windows
CE 6 Standard selected, environment is set up
)
添加好后执行此脚本如下:
D:\qt-everywhere-opensource-src-4.8.6\bin> setcepaths.bat wince60standard-armv4i-msvc2005 后面跟的这个即我们在mkspecs里选的那个WINCE ARM平台目录
接下来开始编译:
D:\qt-everywhere-opensource-src-4.8.6>nmake
编译的时长比较久,3小时左右。
编译成功后在当前目录下生成一个lib文件夹,里面是编译好的QT库文件(dll与lib,font):
D:\qt-everywhere-opensource-src-4.8.6\lib
D:\Qt\4.8.6\bin
D:\Qt\4.8.6
这里假使我们已经安装好VS2005环境了。
直接双击qt-vs-addin-1.1.11-opensource.exe安装即可,安装完成后,打开VS会看到菜单栏多了一个QT选项,另外新建工程时,也会多出一个QT的选项。
只需要在系统环境变量PATH下面添加:
D:\qt-everywhere-opensource-src-4.8.6\bin;D:\Qt\4.8.6\bin
另外,将刚花了3小时编译后的根目录也添加到QTDIR中:
D:\Qt\4.8.6;D:\qt-everywhere-opensource-src-4.8.6
最后,打开VS,选择QT—》Qt Option,在弹出的对话框中,即Qt Version页面下,这时看到的是Qt4.8.6的配置,这个是在安装Qt4.8.6 Windows版本时自动添加进来的,我们可以照着把Qt wince的目录指定到这里即可。我们这里添加的目录就是上面编译的源码根目录:
D:\qt-everywhere-opensource-src-4.8.6
同时下方有win32和wince默认指定的版本选择,对应选好取可。
到这里事个开发环境就安装、配置好了,可以写一个hello测试一下了。