`

symbian 工程描述文件 (mmp)

 
阅读更多

mmp 文件中的每个语句都以一个关键字开头。下面是一个典型的mmp 文件的例子。

// filebrowseapp.mmp
TARGET filebrowseapp.exe
TARGETTYPE exe
UID 0x100039CE 0xE80000A6

VENDORID 0

#ifdef __WINSCW__
CAPABILITY AllFiles // AllFiles on emulator since no signing is required
#else
CAPABILITY NONE // No capabilities on hardware - otherwise SIS file signing is required
#endif

SOURCEPATH ../src
SOURCE FileBrowseAppUi.cpp
SOURCE FileBrowseDocument.cpp
SOURCE FileBrowseApplication.cpp
SOURCE FileBrowseBaseView.cpp
SOURCE RFsEngine.cpp

SYSTEMINCLUDE /epoc32/include
USERINCLUDE ../inc


SOURCEPATH ../data

START RESOURCE filebrowseapp.rss
TARGETPATH /resource/apps
HEADER
END

START RESOURCE filebrowseapp_reg.rss
TARGETPATH /private/10003A3F/apps
END

START RESOURCE filebrowseapp_loc.rss
TARGETPATH /resource/apps
LANG SC
HEADER
END
START BITMAP filebrowseapp.mbm
TARGETPATH /resource/apps
HEADER
SOURCEPATH ../gfx
SOURCE C16 folder.bmp
SOURCE C16 file.bmp
SOURCE 8 mask.bmp
END

LIBRARY euser.lib efsrv.lib cone.lib eikcore.lib eikcoctl.lib eikdlg.lib egul.lib eikctl.lib apparc.lib
LIBRARY bafl.lib
LIBRARY avkon.lib CommonEngine.lib

下面简单地描述每个关键字的作用:


TARGET
该关键字指明了目标文件(exe或dll文件)的名称。

TARGETTYPE
该关键字指明了工程所产生的目标文件的类型,在上面的例子中,我们生成了一个可执行文件。在大多数情况下,目标文件的类型为dll,exe或是其他的插件(plugin)。

UID
目标(通常指可以执行的.exe或.dll文件)具有三个UID,这些UID用来标识组件,第一个UID是无须指定的。因为它是编译工具根据目标的类型自 动分配的。所以这里所指定的实际上是UID2,这个值进一步指明了目标的类型,上面例子中,值(0x100039CE)指明了目标文件是一个应用程 序,Symbian系统使用这个值来标识所有的应用程序。下一个指定的UID 对每个应用程序来说都是唯一的。它标识了这个应用程序的注册资源文件和该程序的安装包文件.pkg。所以为了保证这个值的唯一性, 您必须要向Symbian申请这个UID,由他们负责从数据库中为您的应用程序分配一个UID。可到Symbian的网站上了解更多的相关信息。有一些 UID的值是用来测试的,例如SDK中的例子:文件系统浏览应用程序(filesystem browser)所使用的UID为0xE80000A6, 您也可以在测试您的应用程序的时候使用这个值,但注意,不要在您的最终产品中使用它。

SECUREID
这是个可选的关键了,上面的例子中没有出现。该关键字为应用程序定义了安全标示符,用来指明这个程序可以访问哪个私有的目录。如果该关键字没有使用,用UID3来代替该关键字。

VENDORID
该关键字是在Symbian OS v9.1版本新增的。用来指定软件提供商的ID号。该关键字不是必须的,可省略。

CAPABILITY
这是 Symbian OS 9.1新增加的关键字。该关键字指明了应用程序的权限(或称作能力,如:查看系统目录)。大上面的例子中,应用程序在模拟器上和在手机上被分配了不同的能 力(capability)。在模器上,该程序被赋予了AllFiles 的权限, 比在手机上运行时,能看到更多的私有文件系统的区域。没有被赋予AllFiles 能力的程序不能看到/Sym 目录下的内容。应用程序只有在经过认证(certificate)以后才能获得AllFiles的能力。关于认证和签名的内容,我们在这一章的后面会讲 到。

SOURCEPATH和SOURCE
SOURCE关键字指明了有哪些源文件和资源文件需要编译,而SOURCEPATH关键字指明了这些文件的位置。这个位置既可以是相对路径(相对于mmp文件),也可以是绝对路径。

SYSTEMINCLUDE
这个关键字指定了系统头文件的位置,系统头文件通常用#include<>语句包含。

USERINCLUDE
该关键字的作用类似于SYSTEMINCLUDE,它指明了在用户自定义头文件所在的位置。

START RESOURCE…END
START RESOURCE 关键字表明了一个信息块的开始,这些信息指明了如何编译资源文件。END 标示该信息块结束。

TARGETPATH
该关键字用来指定被编译后的资源文件的位置。注意: 由于安全方面的考虑,所有的可执行代码(exe或dll)都从手机上的/sys/bin/ 目录运行。可执行代码不需要用该关键字指定位置。TARGETPATH 关键字仅仅用来指定编译后的资源文件的位置。

HEADER
这是一个可选的关键字,当它被使用的时候,系统将会在/epoc32/include/路径下创建资源头文件(.rsg)。这个头文件包含了允许以C++代码引用特定资源的标识符。

LIBRARY
这个关键字列出了应用程序需要链接的库文件。

STATICLIBRARY
该关键字用来指定需要被静态链接的库文件 (库文件中的代码会被链接到您的程序中,而不是需要时才装载到内存)。

START BITMAP…END
这一节包含了应用程序图标所使用的位图(bitmap),以及如何将这些位图编译成.mbm(Symbian系统专有的图像格式)的方式。

EPOCSTACKSIZE
该关键字是可选的,我们上面的例子中并未用到。在以前的Symbian OS 版本中,缺省的栈大小为0X5000字节。在v9.1版本中,缺省值为0x2000。为了增加栈的大小,可以使用该关键字。例 如:EPOCSTACKSIZE 0x5000 。要注意的是, 对栈设置仅仅对真实设备有效,但对模拟器无效。

EPOCHEAPSIZE
该关键字也是可选的,我们上面的例子中并未用到。这个关键字指定了应用程序可以使用的最大、最小堆空间。缺省情况下,4K为最小的尺寸,1M为最大的尺寸。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics