FWIW, you don’t have to add them extra via target_sources. You can just list them directly in the add_library/add_executable command. All our projects at work do it this way, and it works just fine.
Interesting, we do not add them but they are automagically added to the targets in the generated Visual Studio solution. But I guess it only works when you define a target in a CMakeLists.txt.
The CMakeLists.txt for a target should be added automatically, but this is only the one for the directory owning the add_library or add_executable call. If you gather sources in subdirectories or have helper files, they’d need manually listed.