ModuleProvider
按需创建模块。 更多...
- 所有成员列表,包括继承的成员
- ModuleProvider 是 所有项列表 的一部分。
属性
- isEager : bool
- moduleName : string
- name : string
- outputBaseDir : string
- relativeSearchPaths : stringList
详细描述
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 尝试实例化的每个模块执行一次。
moduleName : string |
name : string |
模块提供者的名称。
此属性由 Qbs 设置。
如果通过 qbsModuleProviders 属性 请求 提供者,此属性中指定的名称将与该属性名称匹配,不包含 .qbs
扩展名。否则,它是提供者找到的目录的名称,相对于特定的模块提供者基本目录。例如,如果依赖项是 x.m1
,并且提供者在 module-providers/x/m1/provider.qbs
中找到,则 name
是 x.m1
。如果提供者在 module-providers/x/provider.qbs
中找到,则 name
是 x
。
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 公司和/或全球其他国家的商标。所有其他商标均为其各自所有者的财产。