I am not a fan in anyway of CMake, I like the generators it provides, but I hate myself for using it. However I really HATE most CMake I’ve seen.
Of all things CMakeLists.txt are read many many many many times for than they are modified.
With that in mind writting dubious abstractions in CMake script should be considered a crime.
I will happily repeat myself many times in cmake, because when somebody is reading (quite likely in an IDE) and come across a function it isn’t clear where it is.
If you provide a list of files, directories, etc the reading it becomes much more friendly.