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 unit testing with CTest, packaging with CPack and continuous integration with CDash.

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. Experiment unit testing with CTest
  4. Package full applications with CPack
  5. Setup a continuous integration platform with CDash
  6. Quickly get up to speed with the various tools: CMake, CPack, CTest and CDash


C/C++ : Basic knowledge

Day 1

  • Getting Started with CMake
    • CMake history
    • Use the tool to configure projects in a totally cross platform manner
    • 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)
  • Installation of libraries
  • 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)
  • Writing unit tests with CTest
    • Advanced presentation of the tool handling unit tests: CTest
    • Quickly and easily test applications and algorithms
    • Coverage and dynamic analysis
    • Integration of CTest with other testing framework

Day 2

  • CMake Modern Best Practices
    • How to convert legacy CMake to modern CMake
    • Best practices with the target-based approach
    • Dealing with internal and external libraries
  • Advanced CMake
    • Advanced CMake command for efficient compilation
    • Concept of cross-compilation
    • Cross-compilation
    • Tips to improve your CMake scripts
  • 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

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: October 3-4, 2022
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

Julien Finet is a Technical Leader at Kitware Lyon.

At Kitware, Julien Finet has been an R&D engineer and a project manager on numerous projects related to Medical imaging (3D Slicer, ITK, DICOM…), Scientific Visualization (VTK, ParaView…), Computer Aided Design (CAD) and more recently over the Web (VTK.js, ParaViewWeb, React…).

At Kitware, Julien Finet has been involved in numerous projects for the Medical and Scientific Visualization departments(VTK, ITK, ParaView…). He notably was the technical lead for porting 3D Slicer to Qt. He has been a major developer on CTK and was leading the Bender project, a Slicer based application for repositioning voxelized anatomical models.