compatibility()

警告

这是一个预览功能

compatibility() 方法实现了与 兼容性插件 相同的二进制兼容性机制,但作用于配方层面。通常,全局兼容性插件适用于大多数情况,仅在特殊情况下才需要配方方法。

此方法可在 conanfile.py 中使用,以定义彼此兼容的软件包。如果请求的设置和选项没有可用的二进制文件,此机制将在存在兼容软件包的二进制文件时检索它们。此方法应返回一个兼容配置列表。

例如,如果我们希望使用 gcc 4.8、4.7 和 4.6 版本构建的二进制文件被视为与使用 4.9 版本编译的二进制文件兼容,我们可以声明一个 compatibility() 方法,如下所示

def compatibility(self):
    if self.settings.compiler == "gcc" and self.settings.compiler.version == "4.9":
        return [{"settings": [("compiler.version", v)]}
                for v in ("4.8", "4.7", "4.6")]

返回的列表格式如下所示

[
    {
        "settings": [(<setting>, <value>), (<setting>, <value>), ...],
        "options": [(<option>, <value>), (<option>, <value>), ...]
    },
    {
        "settings": [(<setting>, <value>), (<setting>, <value>), ...],
        "options": [(<option>, <value>), (<option>, <value>), ...]
    },
    ...
]

另请参阅

阅读 二进制模型参考,以全面了解 Conan 二进制模型。