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工程那样去操作它即可!
问题描述:他开发都是在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工程那样去操作它即可!
相关文章推荐
- 一些遇到的Qt程序在Windows平台间移植问题整理
- 一些遇到的Qt程序在Windows平台间移植问题整理
- Qt程序换图标(windows and symbian)
- windows平台QT程序发布打包
- Windows平台下开发QT程序
- qt在windows下编译好的QT程序在其他没有安装QT的机器上会出现图标和图片无法正常显示的问题。
- CGYWIN 编译的可执行程序在WINDOWS平台中运行时,解决system函数不能使用的问题
- Qt在Windows版发布程序时遇到的问题
- 在windows下发布QT程序遇到问题及解决
- CGYWIN 编译的可执行程序在WINDOWS平台中运行时,解决system函数不能使用的问题
- Linux下编译静态MinGW环境,编译windows平台Qt程序(使用MXE)
- qt udp程序,在Windows中可以正常收取数据,到了Ubuntu中无法正常收取数据问题解决办法
- windows中使用CMake和Eclipse开发Qt程序遇到的问题
- windows上运行Qt程序exe问题
- 关于使用了QtWebKit的PyQt程序打包后无法显示网页图片的问题(Mac0S和windows)
- Windows平台下tomcat+java的web程序持续占cpu问题调试
- Qt5.0.2 + MinGw4.7 编译出来的程序,在windows平台下的发布与打包程序
- linux下QT程序与windows程序中文字符串传输编码问题的一点解决,utf8转gbk
- 用Qt编写的windows平台关机程序(附源代码)
- Windows平台安装QT 3.3.4过程中遇到的两个问题