CMake `Find` modules should not create `UNKNOWN` imported targets
On Windows, CMake imported targets can have `IMPORTED_IMPLIB` as well as `IMPORTED_LOCATION` properties. These are only handled for `SHARED` libraries, not for `UNKNOWN` libraries, for example in `cmTarget::ImportedGetFullPath`, and `cmTarget::GetMappedConfig`. I think the former affected my ability to use the `$<TARGET_FILE>` expression correctly, as it did not work as expected when specified as `UNKNOWN` for a target which in reality is `SHARED`. I also encountered the need for both the `.dll` and `.lib` path being set on Windows for packaging purposes. As a matter of both flexibility and demonstration for third parties of how to correctly write `Find` modules, cmake find modules should be updated to not use `UNKNOWN` imported targets, but explicitly `SHARED` or `STATIC`, and in the former case, should set both appropriate `IMPLIB` and `LOCATION` properties.
issue