Part of the problem is that when CMake is built for and running in a Unix-like environment (Linux), and is generating for a Windows-based tool (Borland or Visual Studio), how does it translate paths from one to the other? Even if we can come up with a well-defined way of doing that, we still have to teach CMake how to do it. (MSYS is a notable exception to this, since there is a well-defined mapping between an MSYS path and a Windows path.)
Also, in some cases, it’s not possible to detect things like Visual Studio installations from the Linux build because it requires things like access to the registry, or other Windows-specific APIs that may not be available in the Linux subsystem.