ModuleProvider

按需创建模块。 更多...

属性

详细描述

ModuleProvider 项实现了在 模块提供者 概述中描述的过程的模块创建部分。它始终位于名为 provider.qbs 的文件中。

实际模块创建在 relativeSearchPaths 属性的右侧完成。

ModuleProvider 项可能包含 Probe 项。

以下是一个完整的、功能完备的模块提供者示例。它只是创建一个空模块。如果您将此项目放入项目源目录中的 module-providers/mymodule/provider.qbs 文件中,您将能够成功构建一个包含对 mymodule 模块的依赖的产品。

import qbs.File
import qbs.FileInfo
import qbs.TextFile

ModuleProvider {
    relativeSearchPaths: {
        var moduleDir = FileInfo.joinPaths(outputBaseDir, "modules", name);
        File.makePath(moduleDir);
        var moduleFilePath = FileInfo.joinPaths(moduleDir, name + ".qbs");
        var moduleFile = new TextFile(moduleFilePath, TextFile.WriteOnly);
        moduleFile.writeLine("Module {");
        moduleFile.writeLine("}");
        moduleFile.close();
        return "";
    }
}

属性文档

[默认:true] isEager : bool

表示提供者是否为迫切型。

迫切型提供者仅在执行一次时执行,并且在执行时应该一次性创建多个模块。非迫切型提供者将执行多次,每次对 Qbs 尝试实例化的每个模块执行一次。

另请参阅 ModuleProvider::moduleName.


moduleName : string

对于非迫切型提供者,此属性由 QBS 设置,包含当前由提供者实例化的模块的名称。

对于迫切型提供者,此属性的值是 undefined

另请参阅 ModuleProvider::isEager.


name : string

模块提供者的名称。

此属性由 Qbs 设置。

如果通过 qbsModuleProviders 属性 请求 提供者,此属性中指定的名称将与该属性名称匹配,不包含 .qbs 扩展名。否则,它是提供者找到的目录的名称,相对于特定的模块提供者基本目录。例如,如果依赖项是 x.m1,并且提供者在 module-providers/x/m1/provider.qbs 中找到,则 namex.m1。如果提供者在 module-providers/x/provider.qbs 中找到,则 namex


outputBaseDir : string

当评估 relativeSearchPaths 时,应当在哪个路径下创建新的模块。对于当前配置下的每个提供程序,该路径都是唯一的。

此属性由 Qbs 设置。


relativeSearchPaths : stringList

此属性由 Qbs 提取,以检索新的搜索路径,并重新尝试查找模块。

在这里,您需要放入创建新模块文件的代码。使用在 自定义模块和项目 中解释的目录结构。也就是说,名为 m 的模块的文件将位于一个目录 modules/m/ 中,从 outputBaseDir 开始。

返回值是在 outputBaseDir 相对于新的搜索路径模块列表。在大多数情况下,只需要一个搜索路径,此时应返回一个包含空字符串的单元素列表(或仅仅是空字符串,因为 Qbs 具有自动转换功能)。

返回列表也可以为空,这意味着模块提供程序在此环境中无法生成任何模块。


©2023 The Qt Company Ltd. 本文档中的贡献是各自所有者的版权。此处提供的文档是根据自由软件开发基金会(Free Software Foundation)发布的 GNU 自由文档许可证版本 1.3 的条款许可的。Qt 及相应的标志是芬兰的 Qt 公司和/或全球其他国家的商标。所有其他商标均为其各自所有者的财产。