As we use file(GLOB ...) to get the list of source files, CMake will not detect changes in the file list on its own and never regenerate the build scripts.
Using the VCS metadata, we can tell CMake to rerun whenever the VCS has changed something, which will cover many cases. The remaining cases are whenever files are added to the source tree but not registered to the VCS. In this case, the only thing we can probably do is to ask the user to re-run CMake by hand.