CTK框架(五):插件的配置文件MANIFEST.MF

目录

1.MANIFEST.MF文件

2.获取MANIFEST.MF中的数据


1.MANIFEST.MF文件

下面列一下配置文件里面的内容:

名称作用
Plugin-SymbolicName插件的符号名,插件的唯一标识
Plugin-Copyright插件的版权信息
Plugin-Description插件的简要描述
Plugin-Name插件的名称,对插件起说明作用,不影响插件功能
Plugin-Vendor插件的供应商
Plugin-Localization标识插件的Qt .qm 文件的基本名称:如中文qt_zh.qm,此处写zh
Require-Plugin插件所需的其他插件的符号名称
Plugin-Version插件的版本号
Plugin-ActivationPolicy插件的激活策略
Plugin-UpdateLocation在插件更新操作期间,获取新插件版本的位置

1)插件的激活策略由 Plugin-ActivationPolicy指定,默认值是 lazy

        eager:插件使用 ctkPlugin::START_ACTIVATION_POLICY 选项启动,当框架启动时会立即激活。
        lazy:插件使用 ctkPlugin::START_ACTIVATION_POLICY 选项启动,并在 ctkPlugin::STARTING 状态等待,直到插件的第一类实例化发生。插件将在实例返回给请求者之前被激活。
2)插件依赖的插件由Require-Plugin指定,

resolution用来标识Require-Plugin中的解析类型,默认值是mandatory。包括:

optional(可选的):表示所需的插件是可选的,并且即使所需的插件没有被解析,该插件也可以被解析。
mandatory(强制的):表示在解析插件时,所需的插件也必须被解析。如果所需的插件不能被解析,则模块解析失败。

如:

Plugin-SymbolicName:Plugin-xxx-1
Plugin-Version:1.0.0
Require-Plugin:Plugin-xxx-2; plugin-version="[1.0,2.0)"; resolution:="mandatory"

Plugin-xxx-2:为需要依赖的插件名【就是另一个插件在MANIFEST.MF里的Plugin-SymbolicName】;
[1.0,2.0):为Plugin-xxx-2的版本,这里是左闭右开区间,默认是1.0;
resolution:有两个选择,optional、mandatory。前者是弱依赖,就算依赖的插件没有,当前插件也能正常使用,后者是强依赖,如果没有依赖的插件,当前插件就不能被start;
这样就向框架申明了,该插件加载时需要先加载Plugin-xxx-2插件,所有用户插件都应该有这样一份申明。

2.获取MANIFEST.MF中的数据

//获取元数据
......
QHash<QString, QString> headers = plugin->getHeaders();
ctkVersion version = ctkVersion::parseVersion(headers.value(ctkPluginConstants::PLUGIN_VERSION));
QString name = headers.value(ctkPluginConstants::PLUGIN_SYMBOLICNAME);
QString number = headers.value("Plugin-Number");

qDebug()<<"version: "<<version;
qDebug()<<"name: "<<name;
qDebug()<<"number: "<<number;

MANIFEST.MF文件中有很多可填内容,在ctkPluginConstants.h中能找到相关宏定义 

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值