| # Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| # file Copyright.txt or https://cmake.org/licensing for details. |
| |
| include_guard(GLOBAL) |
| |
| # Initializes `<_PREFIX>_<CONFIG>` variables from the corresponding |
| # `<_PREFIX>_<CONFIG>_INIT`, for the configurations currently used. |
| function(cmake_initialize_per_config_variable _PREFIX _DOCSTRING) |
| string(STRIP "${${_PREFIX}_INIT}" _INIT) |
| set("${_PREFIX}" "${_INIT}" |
| CACHE STRING "${_DOCSTRING} during all build types.") |
| mark_as_advanced("${_PREFIX}") |
| |
| if (NOT CMAKE_NOT_USING_CONFIG_FLAGS) |
| set(_CONFIGS Debug Release MinSizeRel RelWithDebInfo) |
| |
| get_property(_GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) |
| if (_GENERATOR_IS_MULTI_CONFIG) |
| list(APPEND _CONFIGS ${CMAKE_CONFIGURATION_TYPES}) |
| else() |
| if (NOT CMAKE_NO_BUILD_TYPE) |
| set(CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE_INIT}" CACHE STRING |
| "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ...") |
| endif() |
| list(APPEND _CONFIGS ${CMAKE_BUILD_TYPE}) |
| endif() |
| |
| list(REMOVE_DUPLICATES _CONFIGS) |
| foreach(_BUILD_TYPE IN LISTS _CONFIGS) |
| if (NOT "${_BUILD_TYPE}" STREQUAL "") |
| string(TOUPPER "${_BUILD_TYPE}" _BUILD_TYPE) |
| string(STRIP "${${_PREFIX}_${_BUILD_TYPE}_INIT}" _INIT) |
| set("${_PREFIX}_${_BUILD_TYPE}" "${_INIT}" |
| CACHE STRING "${_DOCSTRING} during ${_BUILD_TYPE} builds.") |
| mark_as_advanced("${_PREFIX}_${_BUILD_TYPE}") |
| endif() |
| endforeach() |
| endif() |
| endfunction() |