IME the documentation is great at a command level but does a poor job of explaining how things fit together at a macro level.
I did a large project conversion last year and was well into it before I started getting a feel for how everything fit together with Public/Private.
CMake is very easy to use, if you do things properly with targets. include_directories and link_libraries should never never ever be used, use target_include_directories and target_link_libraries instead. This way there is no need to mess about with shell script style variables for dependencies. But so many resources online explain to people how to do things the wrong way, and so their libs end up being a pain to build or depend on.