常见问题

  • 什么是 Conan?

    Conan 是一个用于 C 和 C++ 的包管理器,旨在解决一些非常常见且具有挑战性的问题。并非所有开发人员都使用过包管理器,因此让我们简要解释一下这意味着什么。首先,Conan 包管理器允许开发人员捕获在库和应用程序构建期间创建的工件,并将它们存储为“Conan 包”。这通常是头文件和库(静态或动态)的组合,但也可能包括可执行文件。然后,开发人员可以将其他项目所需的“Conan 包”列为“依赖项”,Conan 会根据需要将所有工件传递给这些项目。通过这种策略,使用 Conan 进行包管理提供了一种一流的机制来重用代码并在多个项目之间共享组件。最后,Conan 具有一个服务器应用程序,可以在其上创建 Conan 存储库。然后,Conan 客户端可以从这些存储库上传和下载 Conan 包,使开发人员能够在他们的团队之间以及不同的开发环境之间共享打包的组件。
  • 使用 Conan 的好处是什么?

    现代 C 和 C++ 软件通常开发为独立组件的集合,包括库和应用程序。这通常包括开源组件和私有组件的混合。因此,随着项目中组件数量的增加,软件构建过程变得越来越困难。使用像 Conan 这样的包管理器来定义和维护这些组件之间的关系,使得构建过程变得容易得多。它还支持强大的功能,例如能够以通用格式描述每个组件的构建步骤,以及能够将已构建的二进制文件存储并上传到共享存储库。
  • 在哪里可以获取 Conan 包?

    ConanCenter 是由 Conan 团队维护的公共、审核过的中央存储库,其中包含数百个流行的开源库和应用程序。这是查找开源项目包的最佳位置,这样您就不必自己创建它们。这些包的配方可以在 ConanCenterIndex 中找到。
  • 我可以创建自己的 Conan 包吗?

    大多数 Conan 用户利用它为自己的组件创建包,并将其用作使用开源包的方法。您可以快速学习如何按照 [文档中的说明] 创建自己的 Conan 包配方。创建了一些自己的包后,您还可以学习如何 将它们上传到您自己的私有 Conan 存储库
  • Conan 可以存储/管理预编译的二进制文件吗?

    是的,Conan 的核心功能之一是能够 存储和管理库和应用程序的预编译二进制文件。当 Conan 包用于构建库或应用程序时,它会将二进制文件存储在本地缓存中。这些二进制文件可以通过远程 Conan 存储库上传和共享。这样,可以在单个包中构建和存储任意数量的唯一配置,包括不同的操作系统、编译器、编译器版本和架构。
  • 我可以将我的构建系统/工具与 Conan 集成吗?

    是的,Conan 支持大多数 流行的 C 和 C++ 构建系统,包括 CMake、Autotools、MSBuild、B2 等。它也是可扩展的,使用户能够轻松地添加对自定义或专有构建系统的支持,这在企业组织中很常见。使用 Conan,您可以构建和打包组件,而不管每个组件使用什么构建系统。
  • Conan 可以管理同一库/包的不同版本吗?

    是的,Conan 具有 强大的版本控制功能。使用 Conan,每个库或包的每个版本都在存储库中独立管理。可以在本地缓存或远程存储库中同时存储任意数量的版本,每个版本都有自己的预构建二进制文件。当您有不同的应用程序依赖于同一库或包的不同版本时,或者当您希望切换给定项目的依赖项版本时,这非常有用。这两种情况都非常简单且完全受支持。
  • 我可以创建自己的私有仓库来托管 Conan 包吗?

    是的,Conan 包含 创建和托管私有 Conan 存储库 以共享包的功能。JFrog 的“Artifactory”应用程序是 Conan 包的首要企业存储库托管平台。Artifactory CE for C 和 C++ 是一个免费版本,旨在为 C 和 C++ 开发人员社区提供免费创建和托管 Conan 存储库的能力,并受益于 Artifactory 服务器应用程序的成熟性和鲁棒性。JFrog 还提供托管为云服务的 Artifactory,Conan 存储库也可以在其中创建和托管。
  • Conan 可以与哪些平台一起使用?

    Conan 是跨平台的。这意味着两件事。首先,这意味着 Conan 客户端可以在 Linux、Windows、macOS 和任何其他可以运行 python 的地方运行。其次,这意味着它可以为任何平台构建和存储包。如果您有可以针对某个平台的编译器或交叉编译器,Conan 可以存储其二进制文件。常见的示例包括 Android 和 IOS 等移动平台、实时硬件平台以及包括裸机设备在内的嵌入式硬件平台。
  • Conan 是否稳定?

    是的。Conan 坚持 对稳定性的承诺。使用主要版本(例如 Conan 1.x)构建的包将继续适用于所有未来的 Conan 1.x 版本。如果包模型存在重大更改,则只有在发布下一个主要 Conan 版本(例如 2.x)时才会发生。
  • Conan 的许可证是什么?

    Conan 项目以非常宽松的 MIT 许可证发布。
  • Conan 项目是如何维护的?

    JFrog Inc. 使用专门的全职开发团队维护 Conan。该团队包括 Conan 的创始人以及其他几位开发人员。Conan 团队还拥有一个正式的社区参与和反馈策略,称为 Conan 部落。该部落由来自 Conan 用户社区的 70 多名志愿者组成,他们承诺在 Conan 团队需要时对主要路线图决策提供意见。
  • Conan 项目有多活跃?

    除了全职维护团队之外,Conan 还拥有一个非常活跃的用户社区,他们每月提交数十个拉取请求。2020 年,Conan 总共收到超过 3500 个 PR。此外,Conan Slack 频道 有 1200 名成员,并且是 C++ 社区 中最活跃的频道之一。
  • 有哪些资源可以帮助我学习 Conan?

    Conan 团队创建了多个交互式、自定进度的 Conan 培训课程。这些课程均完全免费提供,由 JFrog 在 JFrog 学院 中提供。