Professional CMake: A Practical Guide is the handbook for every CMake user, from beginner to seasoned veteran. With over 400 pages of real-world advice presented in a logical, structured format, it progressively teaches how to make the most of the CMake family of tools. Packed with best practices for the 3.x series right up to the latest 3.12 release, topics cover the complete software pipeline, from the very initial setup of a project through to testing, packaging and integration with other projects.
Use the book as a step-by-step learning guide or cherry-pick topics based on areas of interest, it’s up to you. Distributed in electronic form (PDF) with a detailed table of contents, navigation is easy, the content is fully searchable and all future updates are included in the purchase price. All payments and product downloads are handled securely by SendOwl.
Every chapter concludes with a Recommended Practices section, which even experienced CMake users should find helpful. Upcoming chapters will cover features for Qt, building documentation, speeding up builds and automating code checks such as clang-tidy, include-what-you-use, etc. Release notes are also available.
CMake is a very popular tool for defining how projects should be built, tested and packaged. Its maturity, breadth of features, broad platform support and toolchain flexibility have led to its widespread adoption among the software development community. In recent years, the 3.x release series has brought with it a whole new set of powerful capabilities and best practices, leading to the coining of the term Modern CMake. One of the key motivations for this book is to provide developers with an up-to-date, practical guide to learning CMake, paying particular attention to these more modern practices.
The first part of the book introduces each of the fundamental areas of CMake. These early chapters are arranged to get the reader up and running quickly with a basic project, then progressively build up an understanding of CMake’s core concepts in manageable, structured units. These chapters not only present the key concepts, they also shape the reader’s understanding of how CMake can be used most effectively and how to avoid common pitfalls.
The middle part of the book goes into much greater detail about various key areas and has a more task-focused flavor. Much of the material addresses everyday problems frequently faced by developers, while many of the chapters cover features that are new or improved in the 3.x release series. Some chapters go even deeper than discussing CMake alone and cover topics such as how to structure libraries, managing versioning across platforms and an in-depth treatment of Apple-specific technologies such as bundles, frameworks and code signing. The many recommended practices in these chapters demonstrate how developers can get the most out of CMake’s extensive feature set. They also draw attention to a number of common but discouraged practices and explain why they should be avoided.
The last part of the book expands the reader’s focus to extend beyond their own isolated project. Managing the complexities of inter-project dependencies is one of the more difficult tasks faced by developers, and these final chapters tackle this area head-on. The reader is taken through the various aspects of finding dependencies and making their own project available for consumption by others, discussing how to robustly prepare packages in various formats and how to follow common platform conventions. A deep coverage of the available testing features is also included to enable developers to have greater confidence in the integrity of their project. The final chapter brings everything together, demonstrating how to structure a CMake project to improve its maintainability, make day-to-day development more convenient and shorten the path for new developers joining the project.
Yes, you are free to make copies for your own personal use. The copyright message from the book states the following:
- The original purchaser may make personal copies exclusively for their own use on their electronic devices, provided that all reasonable steps are taken to ensure that only the original purchaser has access to such copies.
- Permission is given to use any of the code samples in this work without restriction. Attribution is not required.
The book is only available in electronic form at this time. Buyers are permitted to print their own personal copy if they so wish.
The book is only available in PDF form at this time.
The book is only available directly from the Crascit website.
This site contains a number of CMake blog articles by the same author. Some of the more popular ones include: