暑假已经结束,我们带着新的 Conan 版本回归。我们进行了大量的内部重构,为适应众多最受期待的功能铺平了道路。以下是总结

引入 Python 需求

我们最受期待的功能之一现已在本次发布中实现。Python 需求改进了跨多个配方使用 Python 代码的可用性,使之能够子类化 ConanFile 并将其重用为 Conan 依赖项。

以下是使用 Python 需求的配方示例

from conans import python_requires

base = python_requires("MyBase/0.1@user/channel")

class PkgTest(base.MyBase):
    pass

如您所见,它就像导入新的 python_requires 模块并在全局范围内使用它来要求 Python 配方的引用一样简单。

还可以不子类化 ConanFile 而只是重用函数

from conans import ConanFile, python_requires

base = python_requires("MyBuild/0.1@user/channel")

class PkgTest(ConanFile):
    ...
    def build(self):
        base.my_build(self.settings)

这已作为一项**实验性功能**发布,因此非常欢迎您的反馈。有关更多信息,请阅读更新的文档

支持 Python 3.7

Python 2.7 弃用通知之后,我们在本次发布中增加了对Python 3.7的支持。这应该在所有支持的平台上与当前的 Conan 要求一起使用。请进行测试,如果并非如此,请在问题跟踪器中报告。

根据您的反馈改进和修复 SCM

Conan 1.4中发布的 SCM 功能正在获得越来越多的关注,并且我们感谢用户反馈和贡献,继续对其进行改进。

现在,SCM 会复制.git 文件夹,类似于git clone,并在检出引用的修订版后正确初始化子模块,而不是立即在克隆后初始化为默认的*HEAD*

SVN 支持也正在开发中,将在下一个版本中提供。

其他可用性增强

  • 您现在可以使用查询参数过滤上传:conan upload --query

  • MSBuild 构建帮助程序中添加了许多增强功能。您现在可以并行运行构建并为 x86 架构设置正确的工具链。添加了一个新参数以包含自定义属性,例如/p:MyCustomProperty=true

  • 通过缓存远程请求提高了版本范围解析速度。

  • CMake 生成器现在管理 C++20 标志。

查看更改日志中的完整功能和修复列表,不要忘记更新