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