您的位置:首页 > 编程语言 > Qt开发

Qt程序在windows和symbian平台下的通用性问题

2010-04-28 22:00 288 查看
       前两天看一个师弟开始用Qt写symbian程序,中间遇到一些问题过来问题,我解决后顺便看了下他的开发流程,感觉还是有那么点问题的。

 

       问题描述:他开发都是在carbide中先新建一个Qt工程,然后在这里边写代码,在symbian模拟器上调试。 这样的确是正确的,但是存在两个问题:

 

       问题一:在symbian下调试太过麻烦,还要启模拟器啊什么的,实在没有在windows底下调试速度和方便。

       问题二:这样新建的Qt工程的pro工程文件 写的很“专一”,其只能在symbian底下使用,而不能在别的平台下使用(因为在pro文件中加了一些symbian特有的文件,像rss文件等。),这显然违反了Qt的跨平台原则,直接将它限定在某一平台下。

 

 

   鉴于以上两点,我很讨厌这个系统提供的框架!一般我是如下解决的:

 

      1:不要使用Qt for symbian新建GUI工程生成的框架。而要使用Qt for windows新建工程的框架。因为在windows底下生成的框架中的pro工程文件中:只有cpp和h程序源文件,这些是和平台无关的,所以完全可以跨平台!

     如下是一个Qt for windows生成的pro文件的内容

 

 

TARGET = Qttest

TEMPLATE = app

 

SOURCES += main.cpp/

        mainwindow.cpp

 

HEADERS  += mainwindow.h

 

可见这个工程文件完全是跨平台的,而不是与某一平台绑定。同时这样的话:这个工程完全可以先在windows底下调试好,然后直接拿到carbide上编译一下就可以装手机上了,不需要你一直在symbian模拟器上调试,这样调试速度快多了!

 

     2:接下来可能有人要问了,我该如何导入到carbide中呢把上边这个工程?其实carbide可以直接导入pro文件,但是我没有这样用过,我总觉得这样不正宗,呵呵~~因为carbide这个IDE是针对symbian的,其“正统”上导入的工程文件应该是symbian特有的bld.inf文件,而不是pro。 那有没有办法把Qt的pro工程文件对应转成symbian的bld.inf工程文件呢?  答案是有的,之需要如下做即可:

          首先打开command line,cd到你所建工程的pro文件所在目录;

          而后运行命令:qmake -platform symbian-abld    这条命令就会将 Qt的pro工程文件转成symbian的bld.inf工程文件

而后我们只需要打开carbide直接按照symbian的标准流程来导入上边生成的bld.inf工程文件即可!

 

 

   3:现在还有一个问题,可能有人会问:那有一些工程要用到的库文件啊,或者源文件啊是用symbian c++写成的,这在windows

 

下肯定无法编译调试,此时怎么办? 其实这也容易:在windows下我们调试的仅仅是Qt那部分代码,而symbian这部分肯定是无法调试的,那为了区分二者,我们应是在pro文件里边定义一下,举例如下:

win32 {

HEADERS       +=     ./src/BeEngine.cpp

}

 

symbian {

SOURCES += ./src/BeEngine.cpp

}

 

!symbian {

unix {

SOURCES += ./src/BeEngine.cpp

}

}

 

亦即:我们可以用platform平台关键字来区分一些文件到底是在哪个平台下才会被加到工程中并编译。上边比较有意思的是最后一种形式,其实官方只是说用unix做关键字即可,但是我们试了一下,还是要写上!symbian才行,可能这是一个系统的BUG吧。

 

 

总结:

  1: 建一个Qt工程,推荐将各个平台的文件都在pro中用平台关键字区分开,方便在windows底下调试。

  2:将一个Qt工程转为一个vc工程,只要先用命令行转到pro工程文件所在目录,而后运行:qmake -tp vc即可,这样就会生成一个vcproj这样的VC工程,而后就像打开普通的VC工程那样去操作它即可!

  3:将一个Qt工程转为一个symbian工程,只要先用命令行转到pro工程文件所在目录,而后运行:qmake -platform symbian-abld 即可,这样就会生成一个bld.inf这样的symbian工程,而后就像打开普通的symbian工程那样去操作它即可!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息