How can I combine INTERFACE libraries with shared libraries?

That’s just going to be a fact of life for any shared library-using project on Windows. file(GET_RUNTIME_DEPENDENCIES) is what CMake provides for the general use, but you can also look at providing tools to help install the DLLs as needed.

There are flags to “repack” libraries, but CMake doesn’t provide an interface for it (and I think it is mostly about static libraries rather than shared).