Managing C++ Projects Using CMake
Manage complex, cross-platform builds using industry-standard tools. Create scalable build systems that automate the entire development lifecycle.
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
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.
Chapters
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.
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