Conan can create, upload to your own server, store and efficiently retrieve pre-compiled binaries for your C++ development workflows, with full control over the ABI binary compatibility.
With its unique novel architecture designed specifically for native C and C++ binaries, Conan can upload and download the binaries for all different platforms, OSs, compilers, architecture, cross-builds, with exactly the same commands, and store and manage them in the same place, no need for a different technology or solution in every platform. Decrease the time needed to add support for new CPU architectures and compiler versions - from weeks to hours.
Storing your pre-built binaries allows faster development times, saving time and money in CI builds, ensuring your entire team of developers and CI machines are using exactly the same binaries, ensuring reproducibility, implementing traceability and debuggability of your supply chain and providing the compliance required by policies.
Conan runs on multiple platforms (Windows, Linux, OSX, FreeBSD, SunOS, etc), and it can target any platform with a powerful cross-build model, better than that provided by build systems alone. Unlike others, Conan provides first class support for all platforms equally.
If your C++ project targets multiple OSs and platforms, with Conan you can ensure you use exactly the same tools, commands, infrastructure and workflows across all of them - a single solution that will reduce a lot of duplication, burden and costs when dealing with your C++ dependencies.
While providing completely transparent integration with CMake, the most popular build system nowadays, Conan is build-system agnostic, and also integrates natively (without any need for CMake) with other build systems like MSBuld (Visual Studio solutions), Autotools, Meson, etc, and it can be extended to natively support any build system, including proprietary ones.
Because C++ projects have very different needs, Conan beyond a tool is a framework for C++ package management. A rich Python API allows creating user custom commands to provide a unified interface for developers and CI to all custom extensions.
Extracting artifacts from Conan packages to deploy them in different systems can be done with custom deployers, and there are plugins to define the desired custom binary compatibility, command wrappers or dynamic configuration.
Commands provide documented json output of dependency graphs, packages-lists, cache paths, profiles, and many more. Custom settings allow to define your own compilers, versions, microprocessor, architectures, and any other specialized configuration that your project might need.
The configuration install system allows to automate the sharing and installation of all those extensions easily, together with many other configurable items, like the definitions of remote repositories.
C++ projects often need to use many different tools like build systems, compilers, toolchains, analyzers, etc. Setting up those tools in different operating systems, developers machines, continuous integration agents ensuring reproducibility and allowing easy and automatic update of the tools versions used without breaking the builds can be challenging.
Is it possible to create Conan packages that store these tools, so they will be automatically installed, updated and used by all developers and CI agents, and manage them in exactly the same way that other packages: creating, uploading and installing them from your own servers, having a centralized solution for all your packages, both libraries and tools.
The Conan graph model allows an advanced usage of tools requirements for native, embedded and cross-building scenarios that build systems alone or other package managers can't handle. Managing your tools in an unified way ensures better reproducibility, traceability and developer convenience.
Conan graph model is capable of advanced modeling the different relationships between packages, like executables, shared libraries, static libraries or header-only libraries and package libraries that can be both built as shared or static. Together with the analysis of how the different versioning scheme and changes in dependencies versions affect the package binaries, allows Conan to determine which packages need to be built when changes happens in upstream dependencies, enabling both safe (ensuring that packages that need to be rebuilt are rebuilt) and optimal (ensuring that packages that don't need to be built from source aren't) builds are performed.
Standard versioning mechanisms like version-ranges allow you to move fast, to automatically update the dependencies to the latest matching versions, for getting the latest bug fixes and security patches quickly into your builds. Lockfiles allow to have fully reproducible dependencies, irrespective of the release of new versions, it is always possible to reproduce exactly the same dependencies for reproducible builds.
Creating software is more than building code, and very often, managing other aspects of the software life-cycle is important. Conan is able to automatically store and backup in your own server third-parties tarballs downloaded from the internet, so future builds can be guaranteed, no matter what happens to those internet sources, increasing your builds compliance, reproducibility and security.
C++ builds often generate build logs, tests, test results, code analysis and other side metadata files that are not strictly necessary for further builds, but different industries policies and compliance rules require to manage. Conan can store all this metadata together with the packages, without impacting the performance of package usage and retrieval.
Conan is completely free and open source, with the very permissive MIT license. That means that you can use Conan freely for all kinds of projects, including commercial ones, without any restriction or limitation. You can also modify and adapt Conan to your needs, no lock-in.
The Conan project is sponsored by JFrog, meaning that there is a whole team dedicated to developing, improving, supporting (use Github issues to ask anything you need), testing and documenting Conan, with a strong commitment to stability, as the C/C++ industry needs.
ConanCenter is a great resource, with more than 1500 popular open source packages built for a wide range of configurations in different operating systems and compilers, with a very strict contribution process, in which every contribution is reviewed by humans, and building all the binaries in our own infrastructure. But many industries, company policies or regulations don't allow or recommend using packages from the internet.
Conan offers the best integration with JFrog Artifactory, including the free Artifactory CE (Community Edition), so you can easily build and host your own packages from the conan-center-index Github open source repository, fully owning your binaries supply chain.
Conan is used in production by thousands of companies, including many from the Fortune 100, in automotive, embedded, robotics, financial, gaming, industrial, engineering and many other industries. Conan client gets more than 750k downloads/month, only from PyPI (not counting our downloads page installer), making it one of the top 1% most downloaded projects there.
The “#conan” channel in the CppLang slack team counts with more than 2500 users, consistently being ranked as one of the top most active and used channels in the C++ community. Conan contributors submitted more than 5000 pull requests just in the last year, improving the recipes in ConanCenter, that centralize the knowledge of the large conan community, in the same way that Conan tools integrate that knowledge and good practices gathered along the years with a vast amount of feedback from users and contributors.