There are a few ways to do components. Qt’s way uses components to find subpackages (e.g., find_package(Qt5 COMPONENTS Core) does a find_package(Qt5Core) under the hood). There’s also VTK’s way though that is likely more complicated than most projects need. I think Qt’s way where you make a CMake package per component and then dispatch might be the preferred way to go here.