Modern CMake becomes simple once you understand how targets work

This guide shows how to structure libraries correctly, manage include paths the right way, and avoid the global-state traps that make traditional CMake so painful.
You’ll also receive one short monthly email with practical C++ and CMake insights — no spam, no noise, just useful stuff.

I’m Nikolai — a C++ developer and author writing about modern build practices.
I created this guide to help developers stop fighting CMake and start using it the way it was designed to be used.

What’s inside:

  • The core idea behind modern CMake
  • Why global configuration breaks your project
  • How to define clean, isolated targets
  • Before/after examples of wrong and correct CMake
  • Usage requirements (PUBLIC / PRIVATE / INTERFACE) explained simply

This guide is for

  • C++ developers who want a clean, modern build setup
  • Engineers maintaining or refactoring legacy CMake
  • Anyone tired of hidden dependencies and unpredictable builds

Build systems don’t have to be fragile.
Start with a clean, modern CMake foundation — one target at a time.


That’s it.
A clean PDF with practical examples — plus one useful email per month to help you build better C++ software.