本文讲解的是Qt For Symbian工程文件的一些特异写法,使用到了Qt库的内容,想要了解更多的话,请看本文的讲解。
symbian本身的工程文件不具有cross-platform特性,都是一些自己唯一的定义文件,像:*.mmp,*.pkg文件。而Qt得工程文件为*.pro。如何实现*.pro到*.mmp ,*.pkg文件的映射则值得总结。
1、添加库
对于添加库,无论是静态还是动态库,都需做两步:先是声名一下,其后是拷贝。二者仅仅是声名的方式不一样。
2、声名:
(1)动态库
- symbian:LIBS +=
- MMP_RULES += "LIBRARY fbscli.lib"
(这里我加的是名为fbscli的动态库)
(2)静态库
- symbian {
- LIBS += -lIsolated.lib \
- }
(这里我加的是名为Isolated的静态库)
3、拷贝
拷贝分两部分:一部分是针对编译进行的拷贝,一部分则是针对真机的拷贝。 编译器在编译时:需要找到lib文件,而其查找的路径是epoc32\release下的子文件夹。 当然了:你要在模拟器上跑,还需要再拷贝到模拟器对应的文件夹下。
- symbian {
- BLD_INF_RULES.prj_exports += \
- ".\bin\HWR\Winscw\NRC.dll \epoc32\release\winscw\udeb\NRC.dll" \
- ".\bin\HWR\Winscw\NRC.lib \epoc32\release\winscw\udeb\NRC.lib" \
- ".\bin\HWR\Armv5\NRC.dll \epoc32\release\Armv5\urel\NRC.dll" \
- ".\bin\HWR\Armv5\NRC.lib \epoc32\release\Armv5\lib\NRC.lib" \
- }
winscw文件夹对应emulator , ArmV5对应真机。
//pkg文件,该文件在symbian中是用于打包的文件。在这里作用就是:拷贝对应文件到真机上。
//注意:里边的OCRDll这个名称是可以随便指定的,只要最后使用DEPLOYMENT += 将其加进去就可以。
- symbian: {
- OCRDll.sources =./bin/HWR/Armv5/MMI_BluetoothEngine.dll
- OCRDll.path = \sys\bin
- DEPLOYMENT += OCRDll
- }
4、区分真机和模拟器
对于一些代码部分,例如:通讯功能,摄像头模块等。其实无法运行在模拟器上的,只能运行在真机上。所以有时候:对于一些这样的代码模块,我们最好用Macro宏来将其包起来,只在编译真机版本时:才编译这部分;而在编译模拟器版本时:却不编译这部分。对于这个宏,我们需要在pro文件中声明。(亦即:声明一个只针对真机的宏)。
- symbian {
- MMP_RULES += $$LITERAL_HASH"ifdef MARM_ARMV5"
- MMP_RULES += "MACRO REAL_PHONE"
- MMP_RULES += $$LITERAL_HASH"endif"
- }
(这里假设该宏名为REAL_PHONE )
补充:当然还有很多特异的写法,大家可以查看我上传资源中的Qt for symbian这个资源(http://download.csdn.net/source/2447574)。这是官方给的一个指导性文件,除去上边这些外,别的里边介绍的也比较详细。
上边这两个我都实际使用过,没有问题。测试环境:Qt 4.5.0 Qt 4.6.2 Qt 4.6.3 真机: N97 5800
小结:详解Qt For Symbian工程文件的一些特异写法,对于已经运行成功的实例,你可能更有信心去解决,希望本篇本章对你有所帮助!