macro(clear_variable)
    cmake_parse_arguments(CLEAR_VAR "" "DESTINATION;BACKUP;REPLACE" "" ${ARGN})
    set(${CLEAR_VAR_BACKUP} ${${CLEAR_VAR_DESTINATION}})
    set(${CLEAR_VAR_DESTINATION} ${CLEAR_VAR_REPLACE})
endmacro()

macro(restore_variable)
    cmake_parse_arguments(CLEAR_VAR "" "DESTINATION;BACKUP" "" ${ARGN})
    set(${CLEAR_VAR_DESTINATION} ${${CLEAR_VAR_BACKUP}})
    unset(${CLEAR_VAR_BACKUP})
endmacro()