环境搭建的目标是编译出 自己定制的WINCE6.0(ARMV4)SDK的QT库(dll),并可以在模拟器中运行QT程序!
开发工具是VS2005或者VS2008!
前言:
如果你搜索“QT WINCE” 你会得到很多的部署的文章,比如:
等等! 但由于我自己是第一次进行QT的库的编译,所以甚是陌生,导致各家的方法都试验了 就是没有成功!但在进过摸索之后也找到了自己的方法,最终编译成功了,并用VS2008成功建立demo工程,并可以再Emulator中运行!
方法:
下载 qt-everywhere-opensource-src-4.7.3(其它版本都没有成功),解压更名,我的目录是F:\QTCE473,打开VS2005 command prompt, 输入命令:
“ CD F:\QTCE473”进入qt目录!
一、configure
首先就是配置了,怎么样的配置就有怎么样的nmake, 所以这个很重要 。这个过程其实就是调用F:\QTCE473下的configure.exe 程序进行配置。
输入 configure -help 就可以看到它所支持的命令:
- configure -help
- Usage: configure [-buildkey <key>]
- [-release] [-debug] [-debug-and-release] [-shared] [-static]
- [-no-fast] [-fast] [-no-exceptions] [-exceptions]
- [-no-accessibility] [-accessibility] [-no-rtti] [-rtti]
- [-no-stl] [-stl] [-no-sql-<driver>] [-qt-sql-<driver>]
- [-plugin-sql-<driver>] [-system-sqlite] [-arch <arch>]
- [-D <define>] [-I <includepath>] [-L <librarypath>]
- [-help] [-no-dsp] [-dsp] [-no-vcproj] [-vcproj]
- [-no-qmake] [-qmake] [-dont-process] [-process]
- [-no-style-<style>] [-qt-style-<style>] [-redo]
- [-saveconfig <config>] [-loadconfig <config>]
- [-qt-zlib] [-system-zlib] [-no-gif] [-qt-gif] [-no-libpng]
- [-qt-libpng] [-system-libpng] [-no-libtiff] [-qt-libtiff]
- [-system-libtiff] [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg]
- [-no-libmng] [-qt-libmng] [-system-libmng] [-no-qt3support] [-mmx]
- [-no-mmx] [-3dnow] [-no-3dnow] [-sse] [-no-sse] [-sse2] [-no-sse2]
- [-no-iwmmxt] [-iwmmxt] [-openssl] [-openssl-linked]
- [-no-openssl] [-no-dbus] [-dbus] [-dbus-linked] [-platform <spec>]
- [-qtnamespace <namespace>] [-qtlibinfix <infix>] [-no-phonon]
- [-phonon] [-no-phonon-backend] [-phonon-backend]
- [-no-multimedia] [-multimedia] [-no-audio-backend] [-audio-backend]
- [-no-script] [-script] [-no-scripttools] [-scripttools]
- [-no-webkit] [-webkit] [-webkit-debug] [-graphicssystem
- raster|opengl|openvg]
我建议你可以把所有关于这个命令的介绍保存的txt文档中,以便随时查阅!
这些命令大体分为:
【Configure options:】
【Third Party Libraries:】
【Qt for Windows only:】
【Qt for Windows CE only:】
【Qt for Symbian OS only:】
命令介绍前的"*" ,"+" 的意义:
The defaults (*) are usually acceptable. A plus (+) denotes a default value
that needs to be evaluated. If the evaluation succeeds, the feature is
included.
如果有些组件你不想编译,那么可以利用命令去除!
我的命令式:
configure -platform win32-msvc2005 -xplatform wince60standard-armv4i-msvc2005
然后其它采用默认的配置。
这个命令的意思应该是用PC平台的VS2005的编译器,编译目标平台为wince60standard-armv4i-msvc2005的QT库!
这里要特别注意: wince60standard-armv4i-msvc2005,
这个平台名字就是 F:\qtce473\mkspecs下的 wince60standard-armv4i-msvc2005文件夹的名字,记事本打开里面的 qmake.conf ,看到里面有:
CE_SDK = CE6_CHS # replace with actual SDK name
CE_ARCH = ARMV4I
在这里必须要把CE_SDK 改为与自己的SDK的名字一致,不然不会成功的!在F:\qtce473\mkspecs目录下也可以看到其他的平台配置文件,里面的修改方法是一样的!
这个命令会持续几分钟。
二、设置路径:
在configure命令过后就是要设置路径了,我很多次就是毁在这一步了,路径不对,很多的定义找不到定义点,当然会编译出错了,
而网上都是说用 SET INCULDE \ SET LIB \ SET PATH 这三个命令来设置, 我觉得这个方法很不好,而且很容易出错,我就是这样!
比较好的方法是利用F:\qtce473\bin 下面的批处理文件:setcepaths.bat ,顾名思义,它是用来 set wince paths 的,和qmake.conf 文件一样,我们要保证里面的SDK名和自己安装的SDK名字一致,我修改如下:
ELSE IF "%1" EQU "wince60standard-armv4i-msvc2005" (
checksdk.exe -sdk "CE6_CHS (ARMV4I)" -script tmp_created_script_setup.bat 1>NUL
tmp_created_script_setup.bat
del tmp_created_script_setup.bat
echo CE6_CHS for arm selected, environment is set up
)
在命令行里面输入
setcepaths.bat wince60standard-armv4i-msvc2005 [enter]
当然还得添加系统变量 PATH=F:\qtce473\bin
如果你要查询打钱PC上有哪些SDK的话,使用下面的命令:
checksdk.exe -list
三、nmake
在上面两步都成功的基础上,将输入 “cd ..” 退到目录 F:\qtce473下,然后输入 nmake,就可以了。
这个过程比较长,持续时间因机而定,我的持续了1个小时左右,最终我们就可以在目录F:\qtce473\lib 下看到众多DLL库了。
当然编译examples和demos目录 是比较耗时的,你可以配置,跳过这些目录,具体方法就不想试验了!可以自行查找!
四、使用
安装qt 做的Visual Studio 的插件,我下载的是:qt-vs-addin-1.1.10
安装过后就会在菜单栏看到QT菜单,在新建工程里面也可以看到QT4相关工程(我也安装了qt-win-opensource-4.8.0-vs2008),
新建wince的工程,然后download到模拟器上,并且把QtCore4.dll 和QtGui4.dll 等需要的库copy到exe程序的当前目录,就可以运行了!