Getting Started

Get an overview of the intended audience and learning outcomes of the course.

Creating top-notch software isn't an easy task. Developers researching this subject online frequently have problems determining which advice is up to date and which approaches have already been superseded by fresher, better practices. At the same time, most resources explain this process chaotically, without the proper background, context, and structure.

Modern CMake for C++ is an end-to-end guide offering a simpler experience, as it treats building C++ solutions in a comprehensive manner. It teaches you how to use CMake in your CMake projects, and also shows you what makes them maintainable, elegant, and clean. It guides you through the automation of complex tasks appearing in many projects, including building, testing, and packaging.

The course instructs you on how to form the source directories, as well as build targets and packages. As you progress, you will learn how to compile and link executables and libraries, how these processes work in detail, and how to optimize all steps to achieve the best results. You'll also understand how to add external dependencies to the project:

  • Third-party libraries

  • Testing frameworks

  • Program analysis tools

  • Documentation generators

Finally, you'll explore how to export, install, and package your solution for internal and external purposes. After completing this course, you'll be able to use CMake confidently on a professional level.

Who this course is for

Learning the C++ language often isn’t enough to prepare you for delivering projects to the highest standards. If you’re interested in becoming a professional build engineer, a better software developer, or simply want to become proficient with CMake, if you’d like to understand how projects come together and why, if you’re transitioning from a different build environment, or if you’re interested in learning modern CMake from the ground up, then this course is for you.

To get the most out of this course

Basic familiarity with C++ and Unix-like systems is assumed throughout the course. Although this isn't a strict requirement, it will prove helpful in fully understanding the examples given in this course. This course targets CMake 3.25.1, but most of the techniques described should work from CMake 3.15 (features that were added after are usually highlighted).