Modern CMake short tutorial and best practice
It still boggles my mind that CMake was the thing that won for the next generation of build systems.  Its syntax is probably even worse than bash (except that it didn't have decades of compatibility to blame that on), making it the single worst language I've ever written code in.  I struggle to understand how one could sit down to create a language and come up with something that bad.There was apparently at one point effort to replace its frontend with Lua, but that sadly never took off.  (I, like everyone else, still hold my nose and use it, but man ... like ... bwa?)