MAP_IMPORTED_CONFIG_<CONFIG>

将项目配置映射到导入的目标的配置。

将其设置为导入的目标的配置列表,这些配置可用于当前项目的<CONFIG>配置。从另一个项目导入的目标可能不提供当前项目中可用的相同配置名称集。设置此属性会告诉 CMake,在构建<CONFIG>配置时,哪些导入的配置是合适的。列表中找到的第一个由导入的目标提供的配置(即,通过IMPORTED_LOCATION_<CONFIG> 映射到<CONFIG>)将被选中。作为一种特殊情况,空列表元素指的是无配置的导入目标位置(即,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}"
  )

使用库的 Release 版本用于 MinSizeRelRelWithDebInfo 构建类型

set_target_properties(foo PROPERTIES
  MAP_IMPORTED_CONFIG_MINSIZEREL Release
  MAP_IMPORTED_CONFIG_RELWITHDEBINFO Release
  )