属性

提供属性的条件设置。 更多...

属性

详细说明

注意:本主题记录了产品中属性项的上下文。有关在子项目中使用的信息,请参阅子项目

属性项是设置多个属性值的辅助项。

在以下示例中,如果项目是为 Windows 构建的,将设置两个属性

Product {
    Properties {
        condition: qbs.targetOS.includes("windows")
        cpp.defines: ["ON_WINDOWS"]
        cpp.includePaths: ["extraWindowsIncludes"]
    }
}

可以指定多个属性项来设置依赖于不同条件的属性。出现顺序很重要。语义类似于 if-else 链。以下示例

Product {
    Properties {
        condition: qbs.targetOS.includes("windows")
        cpp.defines: ["ON_WINDOWS"]
        cpp.includePaths: ["myWindowsIncludes"]
    }
    Properties {
        condition: qbs.targetOS.includes("linux")
        cpp.defines: ["ON_LINUX"]
        cpp.includePaths: ["myLinuxIncludes"]
    }
    cpp.defines: ["ON_UNKNOWN_PLATFORM"]
}

等同于

Product {
    cpp.defines: {
        if (qbs.targetOS.includes("windows"))
            return ["ON_WINDOWS"];
        if (qbs.targetOS.includes("linux"))
            return ["ON_LINUX"];
        return ["ON_UNKNOWN_PLATFORM"];
    }
    cpp.includePaths: {
        if (qbs.targetOS.includes("windows"))
            return ["myWindowsIncludes"];
        if (qbs.targetOS.includes("linux"))
            return ["myLinuxIncludes"];
        return base;
    }
}

在属性项中,可以访问属性的外部值。

Product {
    Properties {
        condition: qbs.targetOS.includes("windows")
        cpp.defines: outer.concat("ON_WINDOWS")     // === ["FOO", "ON_WINDOWS"]
    }
    Properties {
        condition: qbs.targetOS.includes("linux")
        cpp.defines: ["ON_LINUX"]                   // === ["ON_LINUX"]
    }
    cpp.defines: ["FOO"]
}

我们建议只针对互斥条件使用属性项。如果有多个属性需要根据同一条件设置,这特别有用。

属性说明

condition : 布尔

用于此项目其他绑定的条件。

这是一个必填属性,没有默认值。


overrideListProperties : 布尔

在此项目内设置的列表属性将覆盖来自模块的值,而不是将它们合并,这是默认行为。在极少数情况下,如果你所依赖的模块向列表属性插入了对某些产品有问题的值,请使用此选项。

默认值: false


©2023 The Qt Company Ltd. 本文档内部的贡献者是各自的版权所有者。本提供的文档根据GNU 自由文档许可证版本 1.3的条款进行许可,该许可证由自由软件基金会发布。Qt 和相应的商标是芬兰和/或全球其他国家的 The Qt Company Ltd. 的注册商标。所有其他商标均为其各自所有者的财产。