CMake is powerful, but getting it right isn’t always easy.

Many teams struggle with slow builds, fragile configurations, and workflows that are difficult to maintain. Often, these issues come down to how CMake is set up and used.

This course teaches you how to use modern CMake effectively.

Led by the developers who build and maintain CMake, this training course focuses on practical, real-world applications—not theory. 

You will learn how to:

  • Build reliable, portable software across platforms.
  • Reduce build times and avoid unnecessary rebuilds. 
  • Use modern, target-based CMake effectively. 
  • Debug, test, and package your software with confidence. 

One Course. Three Sessions.

This is a complete CMake training program structured into three sessions. Designed as a complete learning path, the course takes you from foundational concepts to modern best practices to advanced workflows.

Most participants choose to attend all three sessions to gain a comprehensive understanding of modern CMake.

If you’re looking to focus on a specific area, each session can also be taken individually based on your experience and goals.

Agenda

Foundations of CMake

If you are new to CMake or working with builds that feel inconsistent, this is where to start.

You will learn how CMake works, how to structure projects correctly, and how to avoid common mistakes that lead to fragile builds.

Best for:

  • New CMake users
  • Teams with inconsistent or hard-to-maintain builds

You will learn how to:

  • Understand core syntax, variables, and workflows
  • Confidently configure and generate builds
  • Build simple, portable CMake projects

Agenda:

  • Getting Started with CMake
    • Major features
    • Configuration workflow
    • Running CMake
  • Setting Up Projects with CMake
    • CMake syntax: variables, cache, and flow management
    • Building libraries and executables
    • Overview of Modern CMake’s target-centric approach
    • Tips to speed up your builds
  • Live Q&A
    • Interactive learning with CMake developers
    • Opportunity to ask questions specific to your use case

By the end of this session, you’ll have a clear understanding of how to structure and build reliable CMake projects from the ground up.

Modern CMake Best Practices

Many teams struggle to use CMake effectively. This part focuses on modern, target-based approaches that improve performance, maintainability, and scalability.

If your builds are slow, difficult to manage, or full of workarounds, this is likely your starting point.

Best for:

  • Teams maintaining existing CMake projects
  • Developers ready to modernize their build systems

You will learn how to:

  • Use target-based architecture correctly
  • Manage dependencies without unnecessary complexity
  • Improve build performance and structure

Agenda:

  • Applying Modern CMake
    • Generator expressions
    • Installing targets
    • Tips to improve your scripts
  • Companion Tools
    • Writing tests with CTest
    • Coverage and dynamic analysis
    • Overview of CDash
    • Introduction to the packaging tool, CPack
  • Live Q&A
    • Interactive learning with CMake developers
    • Opportunity to ask questions specific to your use case

By the end of this session, you’ll know how to modernize your build system and eliminate common performance and maintenance issues.

Advanced Topics and Tooling

As projects grow, build systems tend to become harder to manage.

In this final part, you’ll learn how to standardize workflows, reduce manual effort, and ensure your build system supports production-level requirements.

Best for:

  • Advanced users
  • Teams with CI/CD, packaging, or cross-compilation needs

You will learn how to:

  • Implement testing with CTest
  • Package software with CPack
  • Handle cross-platform and advanced configurations

Agenda:

  • Modern CMake
    • Importing and exporting targets
    • CMake’s policy system
    • External project & FetchContent
    • Noteworthy changes from recent CMake releases
  • Advanced Topics
    • MPI support
    • CUDA support
    • Cross compilation
    • Fortran support
  • Live Q&A
    • Interactive learning with CMake developers
    • Opportunity to ask questions specific to your use case

Pricing & Registration

You can register for one or multiple sessions during checkout.

Register Now

Session Date Advance Price Standard Price
Session 1: Foundations June 3rd, 1-5 PM ET $399 until 5/20 $499
Session 2: Best Practices July 1st, 1-5 PM ET $399 until 6/17 $499
Session 3: Advanced Topics August 5th, 1-5 PM ET $399 until 7/22 $499
Session 1: Foundations September 2nd, 1-5 PM ET $399 until 8/19 $499
Session 2: Best Practices October 7th, 1-5 PM ET $399 until 9/23 $499
Session 3: Advanced Topics November 4th, 1-5 PM ET $399 until 10/21 $499

Discounts may be available for returning participants | Student pricing available upon request. Contact Us

Join the Summer Course

Session 1: June 3 from 1–5 PM ET
Session 2: July 1 from 1–5 PM ET
Session 3: August 5 from 1–5 PM ET

Advance pricing available for a limited time! View pricing and deadlines.

Save My Seat

Join the Fall Course

Session 1: September 2 from 1–5 PM ET
Session 2: October 7 from 1–5 PM ET
Session 3: November 4 from 1–5 PM ET

Advance pricing available for a limited time! View pricing and deadlines.

Save My Seat

Training Your Entire Team?

​​Bring CMake training directly to your organization with a private, instructor-led session tailored to your workflows.

  • Customized to your codebase and team needs
  • Delivered onsite or remotely
  • Ideal for teams looking to align on best practices

Get a Quote