a

Modern CMake for C++

An in-depth, project-driven CMake course that equips you to manage complex C++ build systems with modern best practices and cross-platform support.

access

Lifetime

level

Beginner

certificate

Certificate of completion

language

English

What will you learn in Modern CMake for C++ Course

  • Grasp modern CMake fundamentals: targets, properties, and the “target‐based” approach

  • Structure cross‐platform C++ projects with out-of-source builds and customizable build types

  • Manage dependencies seamlessly using find_package, FetchContent, and add_subdirectory

​​​​​​​​​​

  • Configure and generate IDE project files (Visual Studio, Xcode) and Ninja/Make workflows

  • Leverage advanced features: generator expressions, imported targets, custom commands, and toolchain files

Program Overview

Module 1: Introduction to Modern CMake

⏳ 1 week

  • Topics: CMake philosophy, version 3+ improvements, basic CMakeLists.txt structure

  • Hands-on: Convert a “hello world” Makefile project into a simple CMake project

Module 2: Targets & Properties

⏳ 1 week

  • Topics: add_library vs. add_executable, target_include_directories, target_compile_features

  • Hands-on: Define a static library and executable target, set per-target compiler options

Module 3: Dependency Management

⏳ 1 week

  • Topics: find_package for system libs, FetchContent for remote sources, interface vs. public vs. private

  • Hands-on: Integrate GoogleTest and fmtlib into your project using both approaches

Module 4: Build Configuration & Generators

⏳ 1 week

  • Topics: CMake presets, build types (Debug, Release), multi-generator support (Ninja, VS)

  • Hands-on: Create build presets and generate Ninja and Visual Studio solutions

Module 5: Custom Commands & Code Generation

⏳ 1 week

  • Topics: add_custom_command, add_custom_target, host tools vs. cross-compilation

  • Hands-on: Auto-generate a header via a Python script at build time

Module 6: Testing & Packaging

⏳ 1 week

  • Topics: enable_testing, add_test, CTest integration, CPack for installers and packages

  • Hands-on: Add a test suite with CTest and create a ZIP/TGZ package via CPack

Module 7: Advanced Features & Toolchain Files

⏳ 1 week

  • Topics: Generator expressions, imported targets, cross-compile toolchains, presets for embedded builds

  • Hands-on: Write a toolchain file for cross-compiling to an ARM target

Module 8: Capstone Project – Multi-Module C++ App

⏳ 1 week

  • Topics: Structuring a large codebase, isolation of third-party libs, reproducible builds

  • Hands-on: Build and package a sample multi-module C++ application (e.g., CLI + library + tests)

Get certificate

Job Outlook

  • Mastery of modern CMake is vital for C++ roles in systems, embedded, and application development

  • Roles include Build Engineer, DevOps Engineer, Embedded Software Developer, and C++ Architect

  • Salaries range from $90,000 to $160,000+ based on domain and experience

  • Strong CMake skills ensure reproducible builds, easier CI/CD integration, and cross-platform support

9.6Expert Score
Highly Recommendedx
This course delivers a hands-on, target-centric approach to CMake, taking you from basic projects to complex, multi-platform build pipelines.
Value
9
Price
9.2
Skills
9.4
Information
9.5
PROS
  • Emphasizes modern, target-based CMake best practices over legacy patterns
  • Covers dependency management and cross-compilation with real-world examples
  • Capstone project ties together all advanced features into a cohesive workflow
CONS
  • Assumes familiarity with C++ and command-line tools
  • Limited coverage of IDE-specific CMake nuances beyond presets

Specification: Modern CMake for C++

access

Lifetime

level

Beginner

certificate

Certificate of completion

language

English

FAQs

  • Basic knowledge of C programming is recommended, but prior CMake experience is not required.
  • The course introduces modern CMake concepts step by step for building and managing projects.
  • Beginners can follow along with hands-on examples to understand project configuration.
  • Familiarity with command-line tools can help navigate CMake workflows efficiently.
  • By the end, learners can configure, build, and maintain C projects using modern CMake practices.
  • Yes, the course covers creating project structures and managing builds with CMake.
  • Learners practice writing CMakeLists.txt files and organizing source files.
  • Techniques for defining targets, linking libraries, and handling dependencies are included.
  • Hands-on exercises demonstrate building projects efficiently and consistently.
  • Advanced project configurations may require additional exploration.
  • Yes, the course teaches linking external libraries and managing dependencies in CMake.
  • Learners practice using find_package, target_link_libraries, and proper include paths.
  • Techniques ensure modular and maintainable project setups.
  • Hands-on examples help integrate third-party libraries seamlessly into projects.
  • Complex dependency management may require further learning or real-world practice.
  • Yes, the course teaches build configurations for different environments and platforms.
  • Learners practice creating debug, release, and custom build types.
  • Techniques include conditional compilation, caching, and generator expressions.
  • Hands-on exercises ensure efficient, reproducible, and cross-platform builds.
  • Advanced optimization and multi-platform setups may require additional practice.
  • Yes, the course equips learners with modern CMake skills essential for professional development.
  • Learners gain knowledge of project organization, dependency management, and build automation.
  • Hands-on exercises provide real-world experience for industry-level projects.
  • Skills help maintain scalable, modular, and maintainable C codebases.
  • Advanced project setups may require additional exploration of complex CMake features.
Course | Career Focused Learning Platform
Logo