Building, testing, and packaging modular software with modern CMake
Radovan Bast, Roberto Di Remigio

#CMake
#Linux
#macOS
#Windows
#CTest
#CPack
#CDash
Learn CMake through a series of task-based recipes that provide practical, simple, and ready-to-use CMake solutions for your code
CMake is a cross-platform, open-source tool for building software in a compiler-free method. CMake Cookbook features a collection of recipes and building blocks with tips and techniques for working with CMake, CTest, CPack, and CDash.
This book includes real-world examples in the form of recipes that cover different ways to configure, build, and test small- to large-scale code projects. You will learn to use CMake's command-line tools and master modern CMake practices for configuring, building, and testing binaries and libraries. With this book, you will be able to work with external libraries and structure your own projects in a modular and reusable way. You will be well-equipped to generate native build scripts for Linux, MacOS, and Windows, simplify and refactor projects using CMake, and port projects to CMake.
By the end of this book, you will have progressed through CMake and understood all its components.
If you are a software developer keen to manage build systems using CMake or would like to understand and modify CMake code written by others, the CMake Cookbook is for you. Basic knowledge of C++, C, or Fortran is required to understand the topics covered in this book.
Table of Contents
1. From a Simple Executable to Libraries
2. Detecting the Environment
3. Detecting External Libraries and Programs
4. Creating and Running Tests
5. Configure-time and Build-time Operations
6. Generating Source Code
7. Structuring Projects
8. The Superbuild Pattern
9. Mixed-language Projects
10. Writing an Installer
11. Packaging Projects
12. Building Documentation
13. Alternative Generators and Cross-compilation
14. Testing Dashboards
15. Porting a Project to (Make)
About the Author
Radovan is working at the High Performance Computing Group at UiT - The Arctic University of Norway in Tromsø and leads the CodeRefinery project. He has a PhD in theoretical chemistry and as code developer is contributing to a number of quantum chemistry programs. He enjoys learning new programming languages and techniques, and to teach programming to students and researchers. He got in touch with CMake in 2008 and has ported a number of research codes and migrated a number of communities to CMake since.









