Conan is a FOSS (MIT license) and portable C and C++ package manager for developers:
- Decentralized, git-like, the server is also released OSS, so it can be hosted in-house, and use conan totally behind the firewall, or just for your private packages. Using local caches, allows full offline usage, also for creating and testing packages.
- Handles both binary packages and building them from source. Packages defined with simple yet powerful python recipes. Build system agnostic, so any build system can be wrapped while creating packages. Generators also allow to consume packages directly from many environments: CMake, Visual Studio, XCode, etc.
- Growing and Involved community, contributing in Github repositories with code and feedback, and actively using conan.
This talk will give a brief technical introduction to conan, showing first how to consume existing packages, defining dependencies, using generators for different build systems (e.g. cmake), using package options (e.g. shared/static linkage) and settings (compiler, version, architecture, libstdc++/libc++/libstdc++11, build type, etc) to install or build the right packages. Also, different handling of paths for shared libraries in different OS will be summarized, and how conan approaches them.
Then, how to create packages will be introduced by example. How to retrieve source code from external sources (github, sourceforge, or any other origin), or integrating the recipe in the same source project, how to build the packages from sources, considering the different inputs (as compiler, architecture, etc. settings and options), how to package artifacts and how to define package information. A short discussion about how upstream dependencies affect your own package depending on linkage, visibility, versions, etc, will be done.