63 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			63 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)
 |