5.1 Doxygen + Sphinx + Breathe
The book is praised for bridging the gap between "getting it to work" and "doing it right" using Modern CMake (version 3.5+).
Use add_custom_command and add_custom_target to automate tasks like generating source files at configure time.