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.