Conan 1.19:CMake 和 Pkg-Config 更好的集成,OSX 框架支持,启用和禁用远程,Clang 9 和 GCC 9.2 版本以及命令行建议
另一个充满新功能、大量错误修复和来自社区贡献的版本!在这个版本中,我们专注于改进 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.exelinkflags
和 cpp_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 变得更好!
最后,您可以在 变更日志 中查看功能和修复的完整列表。