compatibility()¶
警告
这是一个预览功能
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 二进制模型。
了解更多关于 自定义包的二进制兼容性 的信息