How to install multiple FILE_SET for a library in a generic way?

Yes, but if it is used like this:

target_sources(
    ${TARGET_NAME}
    PUBLIC
        FILE_SET public_headers
            TYPE HEADERS
            BASE_DIRS ${PROJECT_SOURCE_DIR}/include
            FILES
                ${PROJECT_SOURCE_DIR}/include/beman/execution/execution.hpp
                ${PROJECT_SOURCE_DIR}/include/beman/execution/functional.hpp
                ${PROJECT_SOURCE_DIR}/include/beman/execution/stop_token.hpp
                ${PROJECT_SOURCE_DIR}/include/beman/execution26/execution.hpp
                ${PROJECT_SOURCE_DIR}/include/beman/execution26/stop_token.hpp
# ...
)

see my PR #215