Managing C++ Projects Using CMake

Manage complex, cross-platform builds using industry-standard tools. Create scalable build systems that automate the entire development lifecycle.

4.6 (1,867 reviews)
Your Progress0%

Who This Course Is For

If you have a basic grasp of C++ but find the build process intimidating, this course is for you. We assume you know the language, but not how to manage large projects.

Course Requirements

  • A working computer (Windows, Linux, or macOS) that you can install development tools on
  • Knowledge of C++ basics like functions, classes, and the purpose of #include directives.
  • No experience with build systems is necessary. We'll explain everything.
  • A willingness to use the command line, though we'll guide you through every command.

New to Programming?

If you're completely new to programming or want a thorough introduction, consider starting with our free introductory course:

Intro to C++ Programming

Become a software engineer with C++. Starting from the basics, we guide you step by step along the way

4.8 (28,219 reviews)
View Recommended Course

What You'll Learn

This course is a comprehensive deep-dive into the entire C++ build ecosystem, centered around the power and flexibility of modern CMake. We leave no stone unturned.

The Full Build Pipeline

Start with a foundational understanding of compilers, linkers, static vs. shared libraries, and object files.

Complete CMake Language Mastery

Learn every aspect of the CMake language, from variables and control flow to functions, modules, and generator expressions.

Advanced Target Management

Master the modern target-centric paradigm, including properties, usage requirements, and abstract targets.

In-Depth Dependency Management

Explore every method for handling dependencies, from find_package and FetchContent to vcpkg and Conan, including versioning and cross-compilation.

Total Workflow Automation

Integrate a full suite of professional tools for testing (CTest, GoogleTest), analysis (ASan, Clang-Tidy), and packaging (CPack).

End-to-End CI/CD and Deployment

Build a fully automated deployment pipeline that takes your code from a Git push to a published GitHub Release with multi-platform installers.

Course Content

This course breaks down learning into 61 lessons across 14 chapters. It's designed for easy navigation and mastery of each topic.

Lesson 1: Building C++ Programs

Before working with CMake, it's useful to understand the tools it orchestrates. This lesson guides you through setting up a C++ toolchain.

Lesson 2: The Compilation Pipeline

Walking through the steps of the C++ compilation process, from source code to machine code.

Lesson 3: Object Files and the Linking Process

The linker's role in the build process, how it resolves symbols to combine object files, and how to troubleshoot common errors.

Lesson 4: Static and Shared Libraries

The difference between static and dynamic libraries, how to create them, and the trade-offs between them.

First Lesson

Building C++ Programs

Before working with CMake, it's useful to understand the tools it orchestrates. This lesson guides you through setting up a C++ toolchain.

Start Course