mirror of
https://github.com/reactos/CMake.git
synced 2024-11-27 05:20:34 +00:00
48f7e2d300
This removes duplicated code for per-config variable initialization by providing a `cmake_initialize_per_config_variable(<PREFIX> <DOCSTRING>)` function. This function initializes a `<PREFIX>` cache variable from `<PREFIX>_INIT` and unless the `CMAKE_NOT_USING_CONFIG_FLAGS` variable is defined, does the same with `<PREFIX>_<CONFIG>` from `<PREFIX>_<CONFIG>_INIT` for every `<CONFIG>` in `CMAKE_CONFIGURATION_TYPES` for multi-config generators or `CMAKE_BUILD_TYPE` for single-config generators.
40 lines
1.5 KiB
CMake
40 lines
1.5 KiB
CMake
# 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()
|