CMake Training

This CMake training covers in depth how CMake works and how to efficiently write CMake scripts for small to larger projects. The second part of the training covers advanced usage of CMake, and notably packaging with CPack, continuous integration with CDash and download, configure and build automatically project dependencies with ExternalProject.

This CMake training mixes theory and application with a set of tutorials and exercises.

cmake training logo


  1. Configure simple and complex projects with CMake
  2. Understand the basics of CMake (variables, cache, flow, etc.)
  3. Package full applications with CPack
  4. Learn about the target centric modern approach
  5. Export and Import your CMake projects
  6. Create SuperBuilds that download, configure, build and install project dependencies


C/C++ : Basic knowledge

Day 1

  • Getting Started with CMake
    • CMake history
    • The advantages of CMake
    • CMake’s major features
    • CMake pipeline configuration
  • Setup projects with CMake
    • CMake syntax: variables, cache usage, and workflow management
    • Use of modules, external packages management, system configuration and installation commands
    • Understand the system’s introspection
    • Pass parameters to the compiler and write specific commands (macros, functions)
    • Optimize Library management
  • Writing unit tests with CTest
    • Presentation of the tool handling unit tests: CTest
    • Quickly and easily test applications and algorithms
    • Integration of CTest with other testing framework
  • CMake Modern Best Practices
    • How to convert legacy CMake to modern CMake
    • Best practices with the target-based approach
    • Tips to debug your CMake scripts
    • Fine tuning of target properties propagation via dependencies

Day 2

  • Packaging with CPack
    • Introduction to the packaging tool: CPack (provided with CMake)
    • Quickly and efficiently package applications on multiple platforms: Windows, Mac, Linux (Debian installers and Yum)
  • CMake Presets
    • Setup the environment of CMake to configure, build, test and package your project
    • Automatically set environment variables or predefined CMake variables
  • Continuous Integration with CDash
    • Implement a continuous integration system prototype
    • Send unit tests to the CDash website
    • Maintains a global overview of the software quality
    • Unique CDash features: code coverage, memory analysis, client configuration
  • Advanced CMake
    • Mixing library types
    • Symbol visibility
    • Generator expressions
    • Export and Import your CMake project (Config Modules)
    • Dealing with internal and external libraries
    • Concepts of cross-compilation
  • External Projects
    • Download, Patch, Configure, Build, Test and Install your dependencies automatically
    • Integrate Superbuild in your project
    • Presentation of the Conan package manager

This training course will be taught in English. Course notes are also in English.
Participants are asked to bring a laptop computer for this training session.
The instructor will communicate all the specifications required to each participants before the training session.

Lunch is included.

Kitware SAS is registered as a training center in France


Practical Information

Duration: 2 days
Next training Date: March 13-14, 2023
Time zone: Paris (CET / GMT+1h)
Schedule: 9am to 5pm
Location: Online
Price: 1 500€

Company Training

All our training can be offered on site with a custom agenda. Contact us for more information.

About the instructor

Julien Jomier image

Paul joined Kitware Europe in November 2019, as an R&D engineer in the Application Development team.

Prior to joining Kitware, Paul worked as a C++/Python developer for a Lyon-based start-up where he developed POCs for Connected Objects.

His expertise in C++ and Python is used on different projects in the Application Development team.