• 15210阅读
  • 11回复

使用QT开发Windows Mobile项目的解决方案 [复制链接]

上一主题 下一主题
离线jimmytom
 
只看楼主 倒序阅读 楼主  发表于: 2009-01-09
— 本帖被 XChinux 设置为精华(2009-01-14) —
使用QT开发Windows Mobile项目的解决方案

因为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    @echo off
2    rem
3    rem This file is generated by the installer
4    rem

5    echo Setting up environment...
6    echo -- Using MinGW in: E:\MinGW\bin

7    set PATH=E:\MinGW\bin
8    set PATH=%PATH%;%SystemRoot%\System32

9    echo Starting eclipse...
10    call "E:\eclipse\eclipse.exe" –clean

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的安装工作已完成,并且它们相互工作得很好,互不干扰。

还是那句老话,如果有不明白的地方,欢迎交流。
QQ:371288107
描述:word文档
附件: 使用QT开发Windows Mobile项目最佳解决方案.zip (8 K) 下载次数:133
离线swuster_225
只看该作者 1楼 发表于: 2009-01-10
感谢分享
I Believe I can Fly to the Sky .
离线wd007

只看该作者 2楼 发表于: 2009-01-10
不错,学习一下
欢迎访问我的博客,一起学习提高
http://blog.csdn.net/qter_wd007
只看该作者 3楼 发表于: 2009-01-21
开发wm项目,你照着qt文档里的安装步骤做就可以了,里面写的相当清楚了

另外vs2005编译出跑在模拟器上的那个程序本身就是arm的,你直接放到手机里也可以跑,这个我试过了

另外你用vs编译过qt之后,mingw就不能用了,你之前扯那堆mingw的基本白扯了……

你开发ce项目时,qmake会给你生成vs的vcpro文件,用vs直接开,其实比eclipse用着方便,毕竟你可以直接进行编译,调试,调用模拟器,连接目标机等事情
离线dianfengxiao
只看该作者 4楼 发表于: 2009-07-17
感谢分享
离线feline

只看该作者 5楼 发表于: 2009-07-17
大多数人都是提问,难得有人写心得体会。楼主继续加油
[操作系统版本]  Windows.2k.pro_en
[Qt SDK版本]    4.5.1
[SDK 发布日期]  2009.02
[IDE(集成开发环境)] 命令行
离线ny13524
只看该作者 6楼 发表于: 2009-08-26
多谢分享
离线pinkfrog
只看该作者 7楼 发表于: 2009-08-26
不理解为何要这样做,用vs搞定一切不是更好么
离线allblue

只看该作者 8楼 发表于: 2009-08-27
学习了
黑暗魔法
离线ny13524
只看该作者 9楼 发表于: 2009-10-21
呵呵,不错,感谢分享
离线godpig
只看该作者 10楼 发表于: 2009-10-27
谢谢!!
离线y383564500
只看该作者 11楼 发表于: 2009-12-28
谢谢分享啊,学到了很多
快速回复
限100 字节
 
上一个 下一个