Not really. Different generators tend to have different install layouts (certainly wheels at least; not that it’s supported anyways) and install scripts don’t really know what generator is being used. The “best” answer is to generate all possible install rules for all supported packages use different components to select which install rules apply for which generator.
A pattern that I have used is to have a separate project that handles CPack, one per generator. These projects basically rummage through a given install prefix making its own install() calls to the right location for the given CPack generator. But this loses a lot of context (e.g., I drop basically anything that isn’t executable such as headers, CMake packages, data, etc.) as tracing these are hard and they’re not necessary for our use anyways.