导出

将依赖项和属性导出到其他产品。 更多...

属性

详细描述

导出项目可以出现在一个 产品 项中。它定义了一个可以由其他产品依赖的带有产品名称的 模块。附加到导出项目的属性将在定义导出项目的所有产品中生效。例如,考虑以下两个产品

Product {
    name: "A"
    Export {
        Depends { name: "cpp" }
        cpp.includePaths: exportingProduct.sourceDirectory
        cpp.defines: ["USING_" + exportingProduct.name.toUpperCase()]
    }
}

Product {
    name: "B"
    Depends { name: "A" }
}

产品 B 中的源代码将能够使用来自产品 A 的头文件,而无需指定完整的路径,因为包含路径已通过 A 的导出项目告知编译器。此外,产品 B 将使用定义 USING_A 的宏进行编译。

除非在 导出 项目中明确指定,否则不会导出依赖项的关联 产品 的模块

Product {
    name: "B-Exporting-A"
    Depends { name: "A" }
    Export {
        Depends { name: "A" }
    }
}

导出依赖项的关系是传递的。依赖于依赖于产品 B-导出-A 的产品 C 也会直接依赖于 A,从而继承 A 导出的包含路径和预处理器宏。

Product {
    name: "C"
    Depends { name: "B-Exporting-A" }
}

在导出项目中,您可以使用 exportingProduct 变量来引用定义导出项目的产品。使用 importingProduct 变量来引用拉入结果模块的产品

Product {
    name: "D"
    Export {
        Depends { name: "cpp" }
        cpp.includePaths: [exportingProduct.sourceDirectory, importingProduct.buildDirectory]
    }
}

属性文档

[since 1.12] prefixMapping : 变量

此属性允许在非部署和部署上下文中提供导出值的翻译。它是一个具有属性 prefixreplacement 的对象数组。数组的元素应用于此项目中设置的其它所有属性,使得如果属性的值以 prefix 开头,则该前缀被 replacement 替换。通常用于 C/C++ 包含路径。例如,在一个同时提供包含文件的库中(在将其作为更大项目的一部分构建时直接从其源目录包含,以及在一些安装在的位Hp构建的项目中构建对它无关的项目),您可以编写以下内容

Export {
    Depends { name: "cpp" }
    cpp.includePaths: [exportingProduct.sourceDirectory]
    prefixMapping: [{
            prefix: exportingProduct.sourceDirectory,
            replacement: FileInfo.joinPaths(qbs.installPrefix, "include")
    }]
}

默认值: 未定义

此属性是在 Qt 1.12 中引入的。

另请参阅Exporter.qbsExporter.pkgconfig


©2023 嵌入本文件的 Qt 公司文档贡献版权属于各自的拥有者。本文件中提供的文档是根据自由软件基金会的发布,遵循GNU 自由文档许可证版本 1.3 进行授权的。Qt 及其关联标志是芬兰的 Qt 公司及其它国家/地区的商标。所有其他商标属于其各自的所有者。