视频

警告

本节介绍一些关于 Conan 的会议演讲和演示。虽然它们非常有信息量和教育意义,但请注意,其中一些可能已过时。请始终以文档和参考资料为准,而不是视频。

ACCU 2025

使用 Conan2 构建大规模 C/C++ 项目的持续集成 by Diego Rodriguez-Losada

开发大规模 C、C++ 项目主要有两种范式:使用单体仓库和基于包的开发,两者各有优缺点。使用 Conan 等包管理器可以轻松检索依赖项,包括二进制文件,从而避免从源代码进行持续且昂贵的重新构建。虽然这对第三方依赖项来说很容易,但当依赖项非常稳定时,在大型依赖项图中,当有不同开发人员同时处理不同包时,可能会更具挑战性。

利用 Conan 2 的新工具,可以为大规模项目实现高效的持续集成流程,计算需要构建的包以及它们的具体顺序和并行性。

将引入“产品管道”的概念,这是一种可扩展的方法,可以专注于业务价值,同时提高效率。可以为每个不同的产品计算依赖图的构建顺序,针对每种不同的配置(平台、编译器、构建类型等)。这可以高效地完成,考虑到版本方案和包类型(仅头文件、静态库、共享库、应用程序),以及对包二进制文件中的依赖项影响的明确新颖模型。

然后,可以将所有不同的计算出的图“构建顺序”合并成一个,以避免重复构建。最终合并的图“构建顺序”可以高效地分发到不同的构建代理,因为它还指定了哪些包构建可以并行进行。对于具有并发更改的项目,在此阶段使用锁定文件对于保证依赖项的一致性和可重现性非常重要。

最后,将介绍使用多个服务器存储库和跨存储库复制包的 CI 流程中的阶段概念。这个过程被称为包提升,是 DevOps 中其他技术的已知最佳实践,对于避免 CI 构建可能引入的对开发人员和生产系统的干扰至关重要。

本次演讲将展示理论基础和一个完整的真实示例,提供可用源代码来演示所介绍的功能。

使用 std::cpp 2024

释放 Conan 2 的强大功能 - 15 个你不知道的新功能!Luis Caro / Diego Rodriguez-Losada

Conan 2.0 发布已超过一年,并引入了大量新功能和改进。自发布以来,团队根据用户反馈不断进行改进,发布的新功能比以往任何一年加起来都要多。
与 Conan 团队的 Diego 和 Luis 一起,了解 Conan 2 为你的 C 和 C++ 包管理开发工作流程提供的实际示例。亮点包括:透明回退到系统提供的依赖项、管理元数据文件、灵活且完全透明的 CMake 集成等等!

ACCU 2022

Conan 2.0 C、C++ 包管理器的高级依赖模型 by Diego Rodriguez-Losada

Conan 2.0 引入了新的依赖项模型,具有需求“特性”,如可见性、头文件和库的独立定义和传播等,可以模拟所有这些高级用例。本次演讲将介绍这个新模型,并将其应用于解决不同的高级用例,并提供真实世界的示例。

CppCon 2022

Conan 2.0 C/C++ 包管理器有什么新变化 - Diego Rodriguez-Losada

自 Conan 1.0 发布以来,我们不断从 C++ 生态系统的发展中学习;通过与成千上万的用户和客户的对话,包括许多全球最大的 C++ 相关公司,我们学到了许多经验教训、挑战和行业趋势。本次演讲总结了其中一些经验教训,以及我们如何利用这些经验教训来创建 Conan 的新主要版本。

Meeting C++ 2023

CMake 和 Conan:过去、现在和未来 - Diego Rodriguez-Losada

本次演讲将快速回顾过去的方法、它们的不足之处,以及现代 CMake 和 Conan 集成如何改进了它们。
从变量到目标,再到与现代 Conan 生成器进行透明的目标集成。
更好地分离关注点,使用 CMake 工具链对齐二进制配置。
使用 CMake 预设改善开发人员体验。
使用 CMake 的新依赖项提供程序功能进行透明依赖项安装的新 CMake-Conan 集成。

使用 std::cpp

为什么你不应该编写自己的 C++ 包管理器 Luis Caro Campos JFrog

本次演讲将快速概述 Conan 如何处理 C++ 的内在复杂性。
头文件与二进制符号
共享库和静态库
符号可见性
二进制兼容性:是否存在一种放之四海而皆准的建模方法?
构建时依赖项解析只是战斗的一半,运行时依赖项呢?

Meeting C++ 在线图书和工具展

Conan 2.0 演示 - Chris McArthur