zoukankan      html  css  js  c++  java
  • qt creator源码全方面分析(2-10-3)

    Plugin Meta Data

    插件的元数据文件是一个JSON文件,包含加载插件库所需的所有信息,决定要加载哪些插件,以及加载顺序(取决于依赖关系)。此外,它包含插件的作者,插件的用途,以及在何处可以找到有关插件的更多信息。 编译插件时,该文件必须位于include搜索路径中,并且必须具有.json扩展名。 JSON文件将作为元数据编译到插件中,然后在加载插件时由Qt Creator读取。

    主键

    主键用于标识插件,定义默认加载行为,包括强制键Name和Version,和可选键CompatVersion,Experimental,DisabledByDefault,Required和Platform。

    值类型 含义
    Name String 用作插件的标识符,例如在其他插件的依赖项中进行引用。
    Version String x.y.z_n形式的版本字符串,用于标识插件。 另请参阅本章的"插件版本说明"小节。
    CompatVersion String 可选项。 如果未给出,则隐式设置为与Version相同的值。 兼容性版本说明当前版本能二进制后向兼容的插件的版本,并用于解决此插件的依赖关系。 即 Version2.1.1和CompatVersion 2.0.0,意味着插件的2.1.1版本是二进制后向兼容该插件的2.1.1~2.0.0的所有版本(含2.0.0)。
    Experimental Boolean 可选项。默认为false。 实验性插件默认情况下不会被加载,而必须由用户显式使能。应该为可能会对用户体验产生负面影响的新插件使能此属性。
    DisabledByDefault Boolean 可选项。默认为false。 如果设置了,相应的插件默认情况下不会被加载,而必须由用户显式使能。 应该为预计不会被太多人使用的插件进行设置,以减少附加资源消耗。
    HiddenByDefault Boolean 可选项。 默认为false。如果设置了,则插件不会显示在"关于插件..."对话框的默认视图中,只有在用户要求查看所有插件时才显示。 如果有-version命令行参数一起时,它也显示。
    Required Boolean 可选项。 默认为false。 作为"关于插件..."对话框的提示,提示用户可能无法手动禁用此插件。 仅用于Core插件。
    Platform String 可选项。 正则表达式,匹配运行插件的平台名称。 省略标签,意味着该插件可加载在所有平台上。

    插件描述键

    这些键仅用于更详细(以用户为中心)的插件描述。 所有这些都是可选项。

    值类型 含义
    Category String 默认为Utilities。用于在"关于插件..."对话框的插件概述中,将相关联的插件放在同一树节点下。
    Vendor String 字符串,描述插件创建者/供应商,例如MyCompany。
    Copyright String 简短的版权声明,例如(C) 2016 MyCompany
    License String or array of strings 关于插件的可能多行的许可信息。 由于UI并非为长文本而设计,因此应保持相对简短。
    Description String or array of strings 对插件应该提供的内容进行可能多行的描述。 由于UI并非为长文本而设计,因此应保持相对简短。
    Url String 链接到有关该插件的更多信息,例如http://www.mycompany-online.com/products/greatplugin

    依赖

    一个插件可以依赖于其他插件。 这些是在插件元数据中指定的,以确保将这些其他插件在此插件之前被加载。

    依赖项通过Dependency键进行声明,键由JSON对象数组组成,包含强制键Name和Version,以及可选键Type。

    以下公式说明了依赖项信息是如何匹配的。 在公式中,被依赖插件的名称(与被依赖对象元数据中定义的Name相同)表示为DependencyName,而被依赖插件的版本表示为DependencyVersion。 一个插件,具有在插件元数据定义的给定的Name,Version和CompatVersion,具备如下描述,则可成功匹配为依赖项,供其他插件依赖:

    • 它的Name 匹配DependencyName, 并且
    • CompatVersion <= DependencyVersion <= Version.

    例如一个插件的依赖项为

      {
          "Name" : "SomeOtherPlugin",
          "Version" : "2.3.0_2"
      }
    

    则将与如下插件匹配,可作为上述插件的依赖

      {
          "Name" : "SomeOtherPlugin",
          "Version" : "3.1.0",
          "CompatVersion" : "2.2.0",
          ...
      }
    

    因为名称匹配,并且依赖项标签中提供的版本2.3.0_2,是在2.2.0~3.1.0的范围内。

    值类型 含义
    Dependencies 依赖对象数组 描述对其他插件的依赖

    依赖对象是具有以下键的JSON对象:

    值类型 含义
    Name String 该插件所依赖的插件的名称。
    Version String 必须兼容的用来填充依赖项的被依赖插件的版本,格式为x.y.z_n。 如果版本无关紧要,则可以为空。
    Type String 可选项。 值为Required, Optional, 或 Test。 如果依赖项是硬性要求,或者有运行插件测试的要求,则定义之。 默认为Required

    可选依赖项

    插件可以指定对另一个插件的依赖关系是可选的,通过向依赖对象添加"Type" : "Optional":

    • 如果依赖关系可以被解决,则插件和它的依赖插件,将按照Required依赖关系进行加载和初始化。
    • 如果依赖关系无法被解决,则只有插件被加载并初始化,就好像根本没有声明依赖关系一样。

    插件不会以任何方式被通知,是否存在可选依赖插件。因为依赖插件可能会被加载,也可能不会,插件也可能不会链接到该依赖插件。从可选依赖插件访问对象的一种常见方法,是通过ExtensionSystem::PluginManager::getObjectByName() 或ExtensionSystem::PluginManager::getObjectByClassName()从全局对象池中获取对象,并在获取的对象上,调用QMetaObject函数。

    测试依赖项

    当用户使用-test命令行参数运行应用程序时,仅加载指定的插件及其依赖插件。这样做是为了避免加载不需要的插件,从而加快测试的执行速度。

    通过使用"Type" : "Test"声明依赖关系,插件可以指定,要求执行测试功能,而不是执行正常功能的依赖插件。测试依赖项是强制加载的,并且不影响加载顺序。

    这种依赖性不传递。

    命令行参数

    插件可以注册命令行参数,用户可以在启动应用程序时提供的。当用户使用-help命令行参数运行应用程序时,这些命令行参数将以单行说明的形式显示,并且插件管理器会基于该信息进行命令行解析和完整性检查。如果插件管理器为插件找到匹配的命令行参数,会传递给给插件的initialize()函数。

    命令行参数是通过Arguments键定义的,该键包含一个参数对象数组。每个单独的参数对象,都具有强制键Name,以及可选键Parameter和Description。

    值类型 含义
    Arguments 参数对象数组 描述插件想要处理的命令行参数

    参数对象是具有以下键的JSON对象:

    值类型 含义
    Name String 命令行参数本身,包含前缀符号'-',例如-my-parameter
    Parameter String 可选项。 如果指定了此参数,则命令行参数需要一个附加值,例如-my-parameter somevalue。 此属性的值作为简短描述,提供给用户。
    Description String 可选项。参数的(单行)描述,用于命令行参数帮助。

    Test.json示例

      {
          "Name" : "Test",
          "Version" : "1.0.1",
          "CompatVersion" : "1.0.0",
          "Vendor" : "My Company",
          "Copyright" : "(C) 2016 MyCompany",
          "License" : [
              "This is a default license bla",
              "blubbblubb",
              "end of terms"
          ],
          "Category" : "My Company Additions",
          "Description" : [
              "This plugin is just a test.",
              "It demonstrates the great use of the plugin meta data."
          ],
          "Url" : "http://www.mycompany-online.com/products/greatplugin",
          "Arguments" : [
              {
                  "Name" : "-variant",
                  "Parameter" : "fancy|boring",
                  "Description" : "Brings up the fancy or boring user interface"
              }
          ],
          "Dependencies" : [
              { "Name" : "SomeOtherPlugin", "Version" : "2.3.0_2" },
              { "Name" : "EvenOther", "Version" : "1.0.0" }
          ]
      }
    

    插件版本说明

    插件版本的格式为x.y.z_n,其中x,y,z和n是非负整数。 您不必以完整格式指定版本 - 任何遗漏的部分都将隐式设置为零。 因此,2.10_2等于2.10.0_2,并且1与1.0.0_0相同。


    原创造福大家,共享改变世界

    献出一片爱心,温暖作者心灵


  • 相关阅读:
    信息学奥赛一本通(c++版) 1003:对齐输出
    读书笔记(华科曹计昌 《c语言与程序设计》)
    使用request对象实现注册示例,get/post的编码问题
    Eclipse中开发第一个web(jsp)项目
    Eclipse恢复默认布局
    手工在tomcat目录中建立个人项目
    通过ServletContext获得工程根目录路径、读取文件以及获得classpath目录下的文件
    ServletContext设置全局变量实现统计站点访问次数
    servlet全局参数的设置
    Eclipse关联Servlet源码详细步骤
  • 原文地址:https://www.cnblogs.com/codeForFamily/p/qt-creator-ide-source-learn-2-10-3.html
Copyright © 2011-2022 走看看