We may earn an affiliate commission when you visit our partners.

CMake

Save
May 1, 2024 Updated July 6, 2025 12 minute read

CMake is an open-source, cross-platform build system that automates the software compilation process. It is widely used in large-scale software development projects and provides a consistent and reliable way to build software on different operating systems and architectures. CMake is also known for its powerful scripting language, which enables users to customize the build process and integrate with other tools and systems.

Why Learn CMake?

There are several reasons why one might want to learn CMake:

Path to CMake

Take the first step.
We've curated nine courses to help you on your path to CMake. Use these to develop your skills, build background knowledge, and put what you learn to practice.
Sorted from most relevant to least relevant:

Share

Help others find this page about CMake: by sharing it with your friends and followers:

Reading list

We've selected 12 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in CMake.
Provides an end-to-end guide to automating complex tasks with CMake, focusing on modern C++ projects. It covers building, testing, and packaging, emphasizing best practices and maintainable code. The second edition includes updates on the latest CMake additions, such as support for C++20 Modules. This book is particularly useful for C++ developers looking to leverage CMake effectively in a professional setting.
Provides a comprehensive overview of CMake, exploring its core principles and advanced techniques. It covers a wide range of topics, from basic concepts to complex build system configurations, offering a valuable resource for users of all levels looking to expand their CMake knowledge.
This comprehensive tutorial provides a thorough introduction to CMake, covering its key concepts, usage, and best practices. It is an excellent resource for beginners and intermediate users looking to gain a solid foundation in CMake.
Focuses on proven techniques and best practices for creating and maintaining well-structured CMake projects. It delves into topics like using CMake presets and modern package management, which are highly relevant for contemporary development workflows. It's a good resource for developers looking to improve the efficiency and scalability of their CMake-based projects.
Offers a collection of recipes and practical examples for using CMake, covering various aspects of structuring, configuring, building, and testing projects. It's a valuable resource for gaining hands-on experience with CMake and understanding how to apply it to real-world scenarios. The recipe format makes it easy to find solutions to specific problems.
Provides a practical guide to using CMake for building software projects, covering topics such as project configuration, building, and testing.
Is designed to guide beginners through creating a CMake project step-by-step, focusing on the most relevant and important aspects to quickly become productive. It aims to not overwhelm the reader with excessive detail and is suitable for those new to build systems or CMake.
This resource, often found as an article or blog post, is known for advocating for and explaining modern CMake best practices. It's a valuable read for understanding the rationale behind modern CMake and how it differs from older approaches.
Published by Kitware, the creators of CMake, this book provides a foundational understanding of the CMake tool suite, including CTest and CPack. While some editions might be older and not fully reflect the latest 'modern CMake' practices, it offers valuable insights into the core functionalities and history of CMake. It can be a useful reference for understanding the origins and fundamental concepts.
While potentially an older publication, a book with this title would likely cover the fundamental aspects of using CMake for the entire software lifecycle, including building, testing with CTest, and packaging with CPack. It could provide a solid introduction to these core CMake functionalities.
Table of Contents
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser