C++
developers, architects
-3-4 days
lecture
workshop

For many years C++ did not have a good and widely adopted build system and dependency manager. What we had was considered messy, hard, and limited. The situation has changed with the introduction of Modern CMake and Conan package manager. Both of the tools are free and open-sourced.

CMake is de-facto standard for C++. It is widely supported by nearly all IDEs and, together with the Ninja generator, delivers probably the fastest build times for large C++ projects. A "Modern CMake" is a subset of old CMake features with the addition of so-called "targets". It allows equipping our projects with an easy to create and maintain build systems.

Conan is a dependency and package manager specifically designed and optimized for accelerating the development and Continuous Integration of C and C++ projects. It has capabilities to build-from source and full binary management. Thanks to that it can create and reuse any number of different binaries for different configurations and any number of different versions of a package, using the same process in all platforms. As it is decentralized, it is easy to run your server to host your packages and binaries privately, without needing to share them. Those features make Conan an excellent solution for enterprise needs.

The training is recommended to all C++ developers and architects. It should be considered mandatory for those that develop or distribute C++ library projects.

Note: This is not a complete CMake and Conan training. The workshop scopes on teaching on how to use Modern CMake and Conan to end up with a successful project that is easy to build, distribute/share, and maintain. In case you are interested in a full CMake or Conan training please let us know.

TRAINING HIGHLIGHTS

  • Understanding of the issues with legacy CMake approach and dependency management
  • Emphasis on Modern CMake, libraries encapsulation, and transitivity
  • Realizing how Conan can improve dependencies handling and package management in your organization

TRAINING AGENDA

The following plan is an initial proposal for the training material. The final agenda is always created based on the individual pre-training analysis of the client's requirements and constraints.

  1. Modern Project Structure
    1. How To Handle Dependencies?
    2. Robust Project Structure
    3. In-source Vs Out-of-source builds
  2. Modern CMake (2 days)
    1. Command Line, Generators, and Build Types
    2. A Minimal Project
    3. Targets, Aliases, Encapsulation, And Transitivity
    4. Subdirectories
    5. Modules
    6. Properties
    7. Generator Expressions
    8. Testing Support
    9. Installing And Finding Dependencies
    10. Custom Build Tasks
    11. Variables, Strings, And Lists
    12. Scope
    13. Flow control
    14. Functions, Macros, And Argument Handling
    15. Installation
    16. Debugging And Diagnostics
  3. Advanced CMake (1 day)
    1. Custom Build Types
    2. Specifying Version Details
    3. More On Libraries
    4. Policies
    5. Finding Things
    6. External Content
    7. Working With Files
    8. Custom Tasks (Configure Stage)
    9. Toolchains And Cross Compiling
    10. Packaging
    11. Build Performance
  4. Conan (1 day)
    1. Conan Environment
    2. Basic Command Line Usage
    3. Installing Dependencies
    4. Generators
    5. Recipe
    6. Profiles, settings, options
    7. Different Ways To Create a Package
    8. Uploading Packages
    9. Conan Package Tools
C++
developers, architects
3-4 days
lecture
workshop

Trainer

Mateusz Pusz
FOUNDER / C++ TRAINER