另一个充满新功能、大量错误修复和来自社区贡献的版本!在这个版本中,我们专注于改进 cpp_info 模型、支持新的编译器版本、一些可用性改进,并且我们加入了 Hacktoberfest!让我们回顾一下下面的所有细节!

为 CMake 和 Pkg-Config 生成器建模库名称

早在 Conan 1.15 中,我们就开始着手开发 Conan 的新关键功能。从那时起,我们发布了 版本 并改进了包 ID 模式(阅读我们的 上一篇博文!),我们创建了 锁定文件 并包含了 conan graph 命令来管理它们,现在是时候改进 package_info() 中的 cpp_info 模型了。

此版本中的功能包含在“组件”功能中。第一个功能是能够为与引用不同的包建模名称。

class Conan(ConanFile):
    name = "libcurl"
    ...

    def package_info(self):
        self.cpp_info.name = "CURL"

这个新的 cpp_info.name 将被 CMake 和 Pkg-Config 生成器用来生成适当的文件名(如 findCURL.cmake)和目标,以便稍后在您的构建系统中使用。这将非常有助于更透明地与 CMake 的 find_package() 集成,正如我们在之前关于 更好 CMake 集成 的博文中讨论的那样。

查看完整文档 此处

支持 Apple OSX 框架

第二个功能与 OSX 框架相关,其中库可以生成诸如 sfml-system.framework 之类必须使用 -framework 标志使用的文件。一些配方使用 cpp_info.exelinkflagscpp_info.sharedlinkflags 声明了与框架库链接的标志,但这并不是声明此信息的正确位置。

因此,此 Conan 版本在 cpp_info 中包含了两个用于此目的的变量

  • cpp_info.frameworks:包含包创建的框架名称的列表。
  • cpp_info.framework_paths:用于查找框架二进制文件的包文件夹的相对目录列表(默认为 ["Frameworks"])。

此功能还包括在 RunEnvironment() 构建帮助程序中设置 DYLD_FRAMEWORK_PATH 变量,以与 DYLD_LIBRARY_PATH 相同的方式管理这些框架。

您可以在 文档 中阅读有关如何管理 Apple 框架的信息。

启用和禁用远程

Conan 使用分散式模型来检索和共享您的包。这意味着您可以在客户端中配置不同的远程,并选择要从中安装包或将包上传到的远程。但是,有时在执行 conan install 时,远程不可连接(例如,在代理后面工作),并且会失败。

使用 conan remote disable <remote>,您现在可以禁用不想用于安装的远程。该远程将不会被使用,但不会从 Conan 配置中的远程列表中删除,因此您可以随时使用 conan remote enable <remote> 重新激活它。

此外,如果远程被禁用,则在列出时会显示。

$ conan remote disable *-center

$ conan remote list

conan-center: https://conan.bintray.com [Verify SSL: True, Disabled: True]
art-local: https://:8081/artifactory/api/conan/art-local [Verify SSL: True]

Clang 9 和 GCC 9.2 支持

由社区贡献,Conan 1.19 包含了 Clang 9 和 GCC 9.2 在默认的 settings.yml 文件中的支持,我们正在努力将 Intel C++ 编译器集成到后续版本中。

同时,请记住,settings.yaml 文件中的值是开源包的约定,但它是 完全可自定义 的,以满足您的需求。您可以在我们的 关于管理消毒剂的建议 中看到如何自定义设置的示例。

命令行建议

Conan 1.19 现在在命令拼写错误时提供命令行建议,并反馈最相似的命令。

$ conan craete .
'craete' is not a Conan command. See 'conan --help'.

The most similar command is
    create

ERROR: Unknown command 'craete'

除此之外,我们在 Conan 安装步骤 的末尾链接了一个由社区维护的项目,用于在 Bash 中自动完成 Conan 命令。您可以在此处查看并尝试:https://gitlab.com/akim.saidani/conan-bashcompletion

放弃对 Python 3.4 的支持

在最近几天,我们在测试套件中遇到了一些关于 Conan 的 Python 3.4 版本的问题。在修复这些问题时,我们意识到 Python 3.4 正被 Python 社区广泛放弃,因为 Conan 的一些依赖项不再受支持。

从 Conan 1.19 开始,我们的测试套件将不会使用 Python 3.4 运行,我们也不会修复它。

此外,请记住,我们将在今年停止对 Python 2.7 的支持,因此我们鼓励所有仍在使用它的人尽快迁移到 Python 3。

我们加入了 Hacktoberfest 2019!

我们很高兴地宣布,我们将参加今年的 Hacktoberfest!Hacktoberfest 作为 DigitalOcean 和 GitHub 之间合作关系的一部分于 2014 年推出,是所有开源项目的年度庆祝活动,它召集了全球贡献者社区。

如果您想参与,请访问 Hacktoberfest 网站 获取详细信息。我们已经在一些我们希望从社区获得帮助的问题中添加了 Hacktoberfest 标签:https://github.com/conan-io/conan/labels/Hacktoberfest

我们很乐意在本月收到并审查新的 PR,以使 Conan 变得更好!



最后,您可以在 变更日志 中查看功能和修复的完整列表。

与往常一样,如有任何错误报告或反馈,请在我们的 问题跟踪器 中打开一个新的问题,不要忘记 更新