Conan 1.40 带来了几个重要的新特性。我们改进了CMakeDepsCMakeToolchain 助手,添加了新的属性,使它们更加灵活。此外,我们最终移除了旧的 conan-center 远程并添加了新的 conancenter 作为唯一预定义的远程。我们添加了对 Clang 13 和 Visual Studio 2022 的支持。此外,现在在global.conf 中设置 default_build_profile,您可以定义 Conan 在构建上下文 中默认使用的配置文件。

Conan 1.40 标志着一个重要的里程碑:开始向新功能过渡

在介绍 Conan 1.40 的新功能之前,我们想提及这个新 Conan 版本的重要性。我们认为一些新的实验性功能,例如双配置文件方法 或新的 conan.tools 已经足够稳定,可以在Conan Center Index 中使用。一旦 Conan Center Index 基础设施更新,迁移到这些新功能将开始。此外,我们已经更新了文档的“创建包:入门” 部分以使用这些新工具。

这是向 Conan 2.0 过渡的一大步。我们提醒您,所有这些与不同构建系统相关的工具链和助手、环境 和包的布局 将是 2.0 版本中唯一保留的。如果您希望平滑过渡到新的主版本,我们建议您开始使用 1.X 版本对其进行测试。

很快,我们将提供有关 Conan Center 过渡的更多详细信息。此外,如果您想随时了解 Conan 2.0 的新开发和提案,请查看Conan 2.0 部落存储库

CMakeDeps 和 CMakeToolchain 助手改进

我们在新的 CMake 助手中添加了一些新属性,以使它们更加灵活。让我们来看一些属性。

  • cmake_target_namespace:使用它来设置 CMake 中使用的目标的命名空间。默认情况下,此命名空间与库名称相同或与 cmake_target_name 属性的值相同。因此,如果您创建了一个名为 hello 的库,则消费者中链接的默认目标将是 hello::hello。使用此属性,我们可以将该目标命名空间自定义为其他命名空间,例如 MyChat::

在配方中的 package_info 中设置此属性

class HelloConan(ConanFile):
    name = "hello"
    version = "0.1"
    ...
    def package_info(self):
        self.cpp_info.set_property("cmake_target_namespace", "MyChat")
    ...

然后,库的使用者可以使用 CMakeLists.txt 中的新命名空间链接库。

cmake_minimum_required(VERSION 3.15)
project(Consumer CXX)
find_package(hello CONFIG REQUIRED)
add_executable(example example.cpp)
target_link_libraries(example MyChat::hello)
  • cmake_find_mode:使用它使 CMakeDeps 生成 FindXXX.cmake 模块文件、配置 CMake 脚本,或两者都生成或都不生成。它可以取以下值:moduleconfigbothnone。如果您想创建一个包装系统库的包,并且使用者应该在 CMake 配置路径中找到配置文件,则 none 选项会很方便。

  • cmake_module_file_namecmake_module_target_namecmake_module_target_namespace:这些属性等效于 cmake_file_namecmake_target_namecmake_target_namespace,但当 cmake_find_modemoduleboth 时,将用于 FindXXX.cmake 模块文件。

将 conancenter (center.conan.io) 设置为唯一预定义的 Conan 远程

您可能知道,我们在 5 月发布了 ConanCenter 的一个新的远程,它具有更具弹性和可扩展性的架构。从 Conan 1.37 开始,它就是默认的,现在在 1.40 版本中,我们移除了旧的 bintray 远程,并保留了 https://center.conan.io 作为 Conan 的唯一预定义远程。如果您使用的是旧版本的 Conan,请记住旧的远程已冻结,并且新的包只能通过新的 https://center.conan.io 获取。有关此内容的更多信息,请阅读专门的博客文章

支持 Clang 13 和 Visual Studio 2022

尽管 Clang 13 和 Visual Studio 2022 尚未正式发布,但我们在本次发布中添加了对它们的支持,以防用户想要开始测试它们。请注意,此支持被视为实验性,因此在正式版本发布时可能会发生更改。

使用 default_build_profile 设置默认构建上下文配置文件

现在,您可以为 Conan 用于多个命令的配置文件构建设置默认配置文件。此外,主机配置文件也可以设置为默认值。使用它就像在global.conf 配置文件中设置 core:default_build_profilecore:default_profile 一样简单。假设我们希望始终在我们的 MacOs 开发环境中为 Linux arm 设备编译

core:default_build_profile=macos_profile
core:default_profile=linux_armv8_profile

请注意,Conan 2.0 将始终使用这些默认值,因此在使用 1.X 时定义它们将有助于过渡到 2.0 版本。如果您想了解更多有关 2.0 更改的信息,请查看已接受的提案,该提案位于Conan 2.0 部落存储库中。



除了上面列出的项目之外,还有一些小的错误修复,您可能希望了解。如果是这样,请参阅变更日志以获取完整列表。

我们希望您喜欢此版本,并期待您的反馈