64 lines
2 KiB
CMake
64 lines
2 KiB
CMake
|
cmake_policy (PUSH)
|
||
|
cmake_policy (VERSION 3.3)
|
||
|
|
||
|
include (CMakeParseArguments)
|
||
|
|
||
|
function (get_cache_variables _CACHEVARS)
|
||
|
set (_SINGLE)
|
||
|
set (_MULTI EXCLUDE)
|
||
|
set (_OPTIONS)
|
||
|
|
||
|
cmake_parse_arguments (_ARGS "${_OPTIONS}" "${_SINGLE}" "${_MULTI}" ${ARGS} ${ARGN})
|
||
|
|
||
|
get_cmake_property (_VARIABLES VARIABLES)
|
||
|
|
||
|
set (CACHEVARS)
|
||
|
|
||
|
foreach (_VAR ${_VARIABLES})
|
||
|
if (DEFINED _ARGS_EXCLUDE)
|
||
|
if ("${_VAR}" IN_LIST _ARGS_EXCLUDE)
|
||
|
continue ()
|
||
|
endif ("${_VAR}" IN_LIST _ARGS_EXCLUDE)
|
||
|
endif (DEFINED _ARGS_EXCLUDE)
|
||
|
|
||
|
get_property (_CACHEVARTYPE CACHE ${_VAR} PROPERTY TYPE)
|
||
|
|
||
|
if ("${_CACHEVARTYPE}" STREQUAL INTERNAL OR
|
||
|
"${_CACHEVARTYPE}" STREQUAL STATIC OR
|
||
|
"${_CACHEVARTYPE}" STREQUAL UNINITIALIZED)
|
||
|
continue ()
|
||
|
endif ("${_CACHEVARTYPE}" STREQUAL INTERNAL OR
|
||
|
"${_CACHEVARTYPE}" STREQUAL STATIC OR
|
||
|
"${_CACHEVARTYPE}" STREQUAL UNINITIALIZED)
|
||
|
|
||
|
get_property (_CACHEVARVAL CACHE ${_VAR} PROPERTY VALUE)
|
||
|
|
||
|
if ("${_CACHEVARVAL}" STREQUAL "")
|
||
|
continue ()
|
||
|
endif ("${_CACHEVARVAL}" STREQUAL "")
|
||
|
|
||
|
get_property (_CACHEVARDOC CACHE ${_VAR} PROPERTY HELPSTRING)
|
||
|
|
||
|
# Escape " in values
|
||
|
string (REPLACE "\"" "\\\"" _CACHEVARVAL "${_CACHEVARVAL}")
|
||
|
# Escape " in help strings
|
||
|
string (REPLACE "\"" "\\\"" _CACHEVARDOC "${_CACHEVARDOC}")
|
||
|
# Escape ; in values
|
||
|
string (REPLACE ";" "\\\;" _CACHEVARVAL "${_CACHEVARVAL}")
|
||
|
# Escape backslash in values
|
||
|
string (REGEX REPLACE "\\\\([^\"])" "\\\\\\1" _CACHEVARVAL "${_CACHEVARVAL}")
|
||
|
|
||
|
if (NOT "${_CACHEVARTYPE}" STREQUAL BOOL)
|
||
|
set (_CACHEVARVAL "\"${_CACHEVARVAL}\"")
|
||
|
endif (NOT "${_CACHEVARTYPE}" STREQUAL BOOL)
|
||
|
|
||
|
if (NOT "${_CACHEVARTYPE}" STREQUAL "" AND NOT "${_CACHEVARVAL}" STREQUAL "")
|
||
|
set (CACHEVARS "${CACHEVARS}set (${_VAR} ${_CACHEVARVAL} CACHE ${_CACHEVARTYPE} \"${_CACHEVARDOC}\")\n")
|
||
|
endif (NOT "${_CACHEVARTYPE}" STREQUAL "" AND NOT "${_CACHEVARVAL}" STREQUAL "")
|
||
|
endforeach (_VAR)
|
||
|
|
||
|
set (${_CACHEVARS} ${CACHEVARS} PARENT_SCOPE)
|
||
|
endfunction (get_cache_variables)
|
||
|
|
||
|
cmake_policy (POP)
|