Conan 可以创建、上传到您自己的服务器、存储和高效检索 C++ 开发工作流的预编译二进制文件,并完全控制 ABI 二进制兼容性。
凭借其专为原生 C 和 C++ 二进制文件设计的独特新颖架构,Conan 可以使用完全相同的命令上传和下载所有不同平台、操作系统、编译器、架构、交叉构建的二进制文件,并在同一位置存储和管理它们,无需在每个平台上使用不同的技术或解决方案。减少添加对新 CPU 架构和编译器版本支持所需的时间——从几周到几小时。
存储您的预构建二进制文件可以加快开发时间,节省 CI 构建的时间和金钱,确保您的整个开发人员和 CI 团队使用完全相同的二进制文件,确保可重复性,实施供应链的可追溯性和可调试性,并提供策略所需的合规性。
Conan 在多个平台(Windows、Linux、OSX、FreeBSD、SunOS 等)上运行,并且可以通过强大的交叉构建模型定位任何平台,这比构建系统单独提供的更好。与其他工具不同,Conan 对所有平台都提供一流的支持。
如果您的 C++ 项目针对多个操作系统和平台,使用 Conan,您可以确保在所有平台上使用完全相同的工具、命令、基础设施和工作流——一个可以减少处理 C++ 依赖项时大量重复、负担和成本的单一解决方案。
虽然提供了与 CMake(当今最流行的构建系统)完全透明的集成,但 Conan 与构建系统无关,并且还与其他构建系统(例如 MSBuld(Visual Studio 解决方案)、Autotools、Meson 等)进行原生集成(无需 CMake),并且可以扩展以原生支持任何构建系统,包括专有构建系统。
因为 C++ 项目的需求非常不同,Conan 除了是一个工具之外,还是一个C++ 包管理框架。丰富的 Python API 允许创建用户自定义命令,为开发人员和 CI 提供所有自定义扩展的统一接口。
可以使用自定义部署程序从 Conan 包中提取工件以将其部署到不同的系统中,并且可以使用插件来定义所需的自定义二进制兼容性、命令包装器或动态配置。
命令提供依赖关系图、包列表、缓存路径、配置文件等许多内容的已记录 json 输出。自定义设置允许定义您自己的编译器、版本、微处理器、体系结构以及项目可能需要的任何其他专门配置。
该配置安装系统允许轻松地自动共享和安装所有这些扩展,以及许多其他可配置项,例如远程存储库的定义。
C++ 项目通常需要使用许多不同的工具,例如构建系统、编译器、工具链、分析器等。在不同的操作系统、开发人员机器、持续集成代理中设置这些工具,确保可重复性并允许轻松自动更新使用的工具版本而不会破坏构建可能具有挑战性。
是否可以创建将这些工具存储为 Conan 包的 Conan 包,以便所有开发人员和 CI 代理自动安装、更新和使用它们,并以与其他包完全相同的方式管理它们:从您自己的服务器创建、上传和安装它们,为所有包(库和工具)提供集中式解决方案。
Conan 图模型允许高级使用原生、嵌入式和交叉构建场景的工具要求,而构建系统本身或其他包管理器无法处理。以统一的方式管理您的工具可确保更好的可重复性、可追溯性和开发人员便利性。
Conan 图模型能够高级建模包之间不同的关系,例如可执行文件、共享库、静态库或仅头文件库以及可以同时构建为共享或静态的包库。结合对不同版本控制方案以及依赖项版本更改如何影响包二进制文件的影响的分析,允许 Conan 确定在上游依赖项发生更改时需要构建哪些包,从而实现安全(确保需要重建的包被重建)和优化(确保不需要从源代码构建的包不被构建)构建。
标准版本控制机制(如版本范围)允许您快速移动,自动将依赖项更新到最新的匹配版本,以便快速将最新的错误修复和安全补丁集成到您的构建中。锁定文件允许拥有完全可重复的依赖项,而不管新版本的发布如何,始终可以重现完全相同的依赖项以进行可重复构建。
创建软件不仅仅是构建代码,而且很多时候,管理软件生命周期的其他方面也很重要。Conan 能够自动存储和备份您自己的服务器上从互联网下载的第三方 tarball,以便将来可以保证构建,无论这些互联网源发生什么情况,从而提高构建的合规性、可重复性和安全性。
C++ 构建通常会生成构建日志、测试、测试结果、代码分析和其他侧面元数据文件,这些文件对于进一步构建来说并非严格必要,但不同的行业政策和合规规则要求进行管理。Conan 可以将所有这些元数据与包一起存储,而不会影响包使用和检索的性能。
ConanCenter是一个很棒的资源,包含 1500 多个流行的开源包,这些包针对不同操作系统和编译器中的各种配置构建,并具有非常严格的贡献流程,其中每个贡献都由人工审查,并在我们自己的基础设施中构建所有二进制文件。但是,许多行业、公司政策或法规不允许或不建议使用来自互联网的包。
Conan 提供了与 JFrog Artifactory 的最佳集成,包括免费的 Artifactory CE(社区版),因此您可以轻松构建并托管您自己的包,来自 conan-center-index Github 开源存储库,完全拥有您的二进制文件供应链。
Conan 已被数千家公司用于生产环境,其中包括许多财富 100 强企业,涉及汽车、嵌入式、机器人、金融、游戏、工业、工程等众多行业。仅从 PyPI(不包括我们的下载页面安装程序)来看,Conan 客户端每月下载量就超过 75 万次,使其成为下载量排名前 1% 的项目之一。
CppLang Slack 团队中的“#conan”频道拥有 2500 多名用户,始终位列 C++ 社区中最活跃和使用最多的频道之一。仅在去年,Conan 贡献者就提交了 5000 多个拉取请求,改进了 ConanCenter 中的配方,这些配方集中了庞大的 Conan 社区的知识,就像 Conan 工具将这些知识和多年来收集的良好实践与来自用户和贡献者的大量反馈相结合一样。