技术开发 频道

用QT开发Windows Mobile项目的解决方案

  【IT168技术】因为Trolltech公司没有为其产品QT提供编译器和集成开发环境,所以在使用QT开发软件的时候其开发工具的选择也存在疑惑,笔者经过多次的实践得出一些经验,让后来者不用太多的探索。

  使用QT来开发Windows Mobile软件更麻烦,也一直没有找到一些好的办法来解决,不过最终还是有点成果,至少比起刚开始接触的时候有了点认识。现总结如下。

  首先,使用QT来开发Windows Mobile程序,不如开发Windows程序那样方便,隔着一层模拟器总让人有束缚感。于是笔者就首先开发在Windows上运行的程序,如果在Windows上运行,并且达到了一些效果,再编译成Windows Mobile的程序,观察效果是不是也达到了。因为QT强大的跨平台性,所以,当为Windows Mobile编译程序的时候,只是一个make过程,且不会花很长时间。所以Windows Mobile程序被转变成了Windows程序,其开发难度和周期也相对减少了(隔着模拟器等程序运行是个漫长的过程)。

  在Windows上,虽然可以使用命令行的方式编译并调试QT程序,但当项目规模扩大以后其代价将相当高,于是将QT嫁接到一个集成开发环境中就成了理所当然的事情了。在这里选择目前很受欢迎的eclipse。而要编译成Windows Mobile上运行的程序时,还要用到Visual Studio.NET。当然也可以只安装一个SDK而不用完全安装Visual Studio.NET。毕竟它仅是用来编译一下在eclipse上调试好的程序,让其输出一个在Windows Mobile上运行的程序。

  这个环境大概会用到的工具如下,

  eclipse方面(开发运行在Windows上的程序):

  JDK

  MinGW

  eclipse

  qt-win-opensource-4.4.3-mingw

  qt-eclipse-integration-win32-1.4.3

  Visual Studio.NET方面(开发运行在Windows Mobile上的程序):

  Visual Studio 2008(仅会用到其部分功能,所以不用完全安装)

  Microsoft ActiveSync 4.5

  Windows Mobile 6 professional SDK

  qt-embedded-wince-opensource-src-4.4.3

  由于得安装两个不同的QT在同一个电脑上,并且它们还都得使用到PATH环境变量,如果这里不设置好的话,在开发过程中也会不停的设置环境变量,其工作也比较烦。接下来会讲到如何不用设置这一切,而让开发工作不用太烦。

  首先安装JDK,因为eclipse需要JDK。

  接着安装MinGW,在这里MinGW的目录可以不放入PATH环境变量中,接下来将会看到它是怎样被eclipse发现的。但是如果还有用得着MinGW的地方,将其放到环境变量中也不会出错。

  再安装eclipse,这个没什么讲的,解压就行。

  再安装QT的MinGW版,其中会要求指定MinGW的安装目录,这里QT知道了MinGW安装在哪。

  最后安装QT与eclipse集成的工具,安装过程会询问MinGW和eclipse的安装目录,于是以后用QT的这个工具启动eclipse的时候它就会知道MinGW被安装在哪。

  好,现在来理一下这个顺序,其实为什么需要这些步骤呢?因为MinGW和eclipse这两个工具都不需要安装,直接解压就行了,而这些工具都是分开的,所以它们不可能在每次启动的时候都来扫一次硬盘,找一下所需的工具被解压到哪了。这样虽然有点麻烦,但如果看清楚了它们之间的关系,一点都不麻烦,不安装的软件有个好处是不依赖于环境,如MinGW一样,解压就能用,如果像Visual Studio.NET这样的工具出了问题怎么办呢?由于其内在的缺陷,一些环境配置的问题很难得出答案。而MinGW这种软件比较方便,当找不到gcc命令的时候我们会想到它的路径是否在PATH中呢?查一下就可以得知了。而这里MinGW唯一跟外界联系的也只有PATH环境变量了。

  现在要做的只是使用QT的集成工具把eclipse、MinGW和QT集合起来,它们之间的关系也只是这样,首先运行eclipse要JDK的支持,所以先安装JDK,而这三个工具安装完以后,如果不用到环境变量,它们是不能联系在一起的。eclipse的集成开发环境,它没有编译器不能工具,MinGW是编译器,它为eclipse工作。而QT是一个库。用MinGW提供的编译外链接工具可以将其链接起来。

  在这里,QT的集成工具是如何把它们联系起来的呢?看一下它的代码就知道了。

1  1 @echo off
2
3   2 rem
4
5   3 rem This file is generated by the installer
6
7   4 rem
8
9   5 echo Setting up environment...
10
11   6 echo -- Using MinGW in: E:\MinGW\bin
12
13   7 set PATH=E:\MinGW\bin
14
15   8 set PATH=%PATH%;%SystemRoot%\System32
16
17   9 echo Starting eclipse...
18
19   10 call "E:\eclipse\eclipse.exe" –clean
20

  7,8两行是最关键的部分,因为笔者的MinGW安装在了E:\MinGW中,并且是我告诉它的,所以它在这里使用了,并且由于QT的需要安装的,所以可能在注册表中,或者其它地方能得知其安装目录,这一点不用操心,第10行调用了eclipse,这也是我告诉它的。它把PATH设置成只包含MinGW的目录和一些系统目录,注意,如果你的PATH中还有其它的目录,在这里将不会被看见,这也是为什么安装两个QT还能安装的使用的原因。QT的安装过程要把QT的bin目录写在PATH中,以让工作的时候能够找到qmake等工具,但是PATH只有一个,如果安装两个QT,则会有两个qmake,它到底会用哪个呢?也许,在PATH中目录先前的会被调用,这里是PATH的寻找规则了,笔者没研究过。幸好这里不用把两个QT的目录都放到PATH中去。另外,读者可能会担心这样会破坏PATH环境变量,因为它是相当重要的,所以胡乱的修改会出问题,但是这里去抛弃了其它有用的目录,而只把系统目录和MinGW的目录放入其中,难道不会出问题吗?当然不会出问题,因为这些影响只会在这个批处理脚本的生命期内起作用,并且不会影响到PATH,当其执行完成以后,PATH还会是原来的PATH,这一点可以放心。

  讲到这里读者应该明白,在上面的安装过程中,QT和MinGW的目录都可以不放入PATH中去,而下面的Windows Mobile版本的QT的安装,则可以独占PATH,而不用再反复的修改PATH来在不同的QT版本中选择。它们是相互隔离的。至少在这一点上可以相当肯定。

  接下来安装Windows Mobile的QT只是一个时间问题,首先安装Visual Studio 2008,再安装Microsoft ActiveSync,再安装Windows Mobile的SDK。接下来可以编译安装QT,前面三个软件的安装都相当简单,下面讲解一下QT的编译安装的详细过程。

  首先解压QT到一个无空格的目录,并且将QT的bin目录放入环境变量PATH中去。

  接着进入目录,输入configure -platform win32-msvc2008 -xplatform wincewm60professional-msvc2008命令,其意思不讲解,有兴趣可以自己研究。

  再输入setcepaths wincewm60professional-msvc2008命令。

  然后输入nmake开始编译。

  最后可以进行清除工作nmake clean。并且如果不想多次编译的话,可以将编译后的文件打包,下次可以免除编译工作,直接解压即可,但是目录要是编译时指定的目录。

  至此,两个QT的安装工作已完成,并且它们相互工作得很好,互不干扰

0
相关文章