The stories about modern CMake are often limited to describing advantages of the target-based approach and how to properly prepare CMake now. However in practice in complex projects various non-trivial tasks appear, like non-standard build stages, generated sources, PCH, distribution of debug symbols, etc.
In this talk, the author shares practical experience in solving these problems using modern CMake tools. We focus on CMake 3.12+. Listeners should be already familiar with modern CMake, know what imported interface targets are, have a good understanding of how CMake variable scopes work.