3
# Function converts a list of cmake cache varibles to a string of
4
# cmake code which set each cmake cache variable. The output in cache
5
# is suitable to be writen to a file for "-C file" command line
8
function( VariableListToCache var_list cache )
9
foreach( var IN LISTS ${var_list} )
11
set( value "${${var}}" )
12
get_property( type CACHE ${var} PROPERTY TYPE )
13
get_property( advanced CACHE ${var} PROPERTY ADVANCED )
14
get_property( helpstring CACHE ${var} PROPERTY HELPSTRING )
15
get_property( strings CACHE ${var} PROPERTY STRINGS )
17
# apply escape sequences
18
foreach( e "\\" "(" ")" "#" "$" "^" "@" )
19
STRING( REPLACE "${e}" "\\${e}" value "${value}" )
22
if ( "${type}" STREQUAL "" )
26
set( _cache "${_cache}
27
set( ${var} \"${value}\" CACHE \"${type}\" \"${helpstring}\" FORCE )")
30
set( _cache "${_cache}
31
mark_as_advanced( ${var} )")
33
if( NOT "${strings}" STREQUAL "" )
34
set( _cache "${_cache}
35
set_property(CACHE ${var} PROPERTY STRINGS \"${strings}\")")
39
set( ${cache} "${_cache}" PARENT_SCOPE)
43
# Function which converts a list a cmake cache variable into a list of
44
# "-Dvar:type=value;" suitable for command line initialization.
46
function( VariableListToArgs var_list args )
47
foreach( var IN LISTS ${var_list} )
48
if( DEFINED ${var} AND NOT ${var} STREQUAL "" ) # if variable has been set
49
get_property( type CACHE ${var} PROPERTY TYPE )
50
if (NOT "${type}" STREQUAL "")
53
set(type ":UNINITIALIZED")
56
STRING( REPLACE ";" "$<SEMICOLON>" value "${value}" )
57
list( APPEND _args "-D${var}:${type}=${value}" )
60
set( ${args} "${_args}" PARENT_SCOPE)