MAP_IMPORTED_CONFIG_<配置>

从项目配置映射到 imported target 的配置。

将其设置为可用于当前项目的“<CONFIG>”配置的导入目标的配置列表。从另一个项目导入的目标可能不会提供当前项目中可用的同一组配置名称。设置此属性会告诉 CMake 在构建 <CONFIG> 配置时适合使用哪些导入的配置。列表中的第一个配置被发现由导入的目标提供(即通过:prop_tgt:IMPORTED_LOCATION_<CONFIG> 映射到``<CONFIG>``)被选中。作为一种特殊情况,空列表元素指的是无配置的导入目标位置(即:prop_tgt:IMPORTED_LOCATION)。

如果设置了该属性并且没有可用的匹配配置,则认为导入的目标未找到。对于非导入目标,此属性将被忽略。

如果在创建目标时设置了此属性,则该属性由 CMAKE_MAP_IMPORTED_CONFIG_<CONFIG> 变量的值初始化。

例子

例如创建导入的 C++ 库 foo

add_library(foo STATIC IMPORTED)

使用 foo_debug 路径作为 Debug 构建类型:

set_property(
  TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG
  )

set_target_properties(foo PROPERTIES
  IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
  IMPORTED_LOCATION_DEBUG "${foo_debug}"
  )

使用 foo_release 路径作为 Release 构建类型:

set_property(
  TARGET foo APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE
  )

set_target_properties(foo PROPERTIES
  IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
  IMPORTED_LOCATION_RELEASE "${foo_release}"
  )

MinSizeRel`RelWithDebInfo 构建类型使用库的 Release 版本:

set_target_properties(foo PROPERTIES
  MAP_IMPORTED_CONFIG_MINSIZEREL Release
  MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
  )