compatibility()¶
警告
这是一个 预览 功能
compatibility()
方法实现了与 compatibility plugin 相同的二进制兼容性机制,但位于 recipe 级别。通常,全局 compatibility plugin 应该适用于大多数情况,而 recipe 方法仅在特殊情况下需要。
此方法可以在 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 二进制模型。