Skip to content

install(IMPORTED_RUNTIME_ARTIFACTS rejects libraries of type UNKNOWN

Imported targets will often be created as type UNKNOWN because they could be shared or static. The FindZLIB module is a prime example where the target type is UNKNOWN, but the install(IMPORTED_RUNTIME_ARTIFACTS command should be able to delay its checks on whether the underlying binary is a shared or static library until later. At the moment, the following simple project results in an error:

cmake_minimum_required(VERSION 3.21)
project(rundep)

find_package(ZLIB REQUIRED)
install(IMPORTED_RUNTIME_ARTIFACTS ZLIB::ZLIB)
CMake Error at CMakeLists.txt:5 (install):
  install IMPORTED_RUNTIME_ARTIFACTS given target "ZLIB::ZLIB" which is not
  an executable, library, or module.

As it happens, the above sample project is likely to be a very common use case for the command. Given that this is new functionality being added for CMake 3.21, it would seem desirable to make this work for UNKNOWN libraries in that release as well.

CC: @kyle.edwards

Edited by Kyle Edwards
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information