What is modular design in the context of CMake targets? Let’s discuss how to achieve modularization and why is it important.

What is modular design in the context of CMake targets? Let’s discuss how to achieve modularization and why is it important.
CMake provides the most basic abstraction facilities – functions and macros. In this post, I discuss how to use both, with an example of utilizing cmake_parse_arguments to achieve built-in-like interfaces.
Part 3 of the series expands on the concept of target properties and the closely related PRIVATE, INTERFACE and PUBLIC keywords
In the second part of the series we discuss the basics of defining and using libraries.
CMake is the predominant meta build system used for C++ projects, making it a required tool in every C++ developer’s skill set. Let’s review some of the fundamental concepts.