| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- # Filename: PerConfigOption.cmake
- #
- # This contains a convenience function for defining per-config options.
- # In single-config generators, it will set the option based on the defined
- # CMAKE_BUILD_TYPE. In multi-config generators, it will create separate
- # options, one per config.
- #
- # Function: per_config_option
- # Usage:
- # option(name "help string" [Config1] [Config2] [...ConfigN])
- #
- # Example:
- # per_config_option(DO_DEBUGGING "Enables debugging." Debug Standard)
- set(_PER_CONFIG_OPTIONS CACHE INTERNAL "Internal variable")
- function(per_config_option name help)
- set(_configs ${ARGN})
- # In single-config generatotrs, we simply create one config.
- if(NOT IS_MULTICONFIG)
- list(FIND _configs "${CMAKE_BUILD_TYPE}" _index)
- if(${_index} GREATER -1)
- option("${name}" "${help}" ON)
- else()
- option("${name}" "${help}" OFF)
- endif()
- elseif(DEFINED "${name}")
- # It's been explicitly defined, so that makes it not a multi-configuration
- # variable anymore.
- option("${name}" "${help}")
- return()
- else()
- foreach(_config ${CMAKE_CONFIGURATION_TYPES})
- string(TOUPPER "${_config}" _config_upper)
- list(FIND _configs "${_config}" _index)
- if(${_index} GREATER -1)
- option("${name}_${_config_upper}" "${help}" ON)
- else()
- option("${name}_${_config_upper}" "${help}" OFF)
- endif()
- endforeach()
- endif()
- list(APPEND _PER_CONFIG_OPTIONS "${name}")
- set(_PER_CONFIG_OPTIONS "${_PER_CONFIG_OPTIONS}" CACHE INTERNAL "Internal variable")
- endfunction(per_config_option)
|