| cmake_minimum_required(VERSION 2.6) |
| project(Unset C) |
| |
| # Local variable |
| set(x 42) |
| if(NOT x EQUAL 42) |
| message(FATAL_ERROR "x!=42") |
| endif() |
| |
| if(NOT DEFINED x) |
| message(FATAL_ERROR "x should be defined!") |
| endif() |
| |
| unset(x) |
| if(DEFINED x) |
| message(FATAL_ERROR "x should be undefined now!") |
| endif() |
| |
| # Local variable test unset via set() |
| set(x 43) |
| if(NOT x EQUAL 43) |
| message(FATAL_ERROR "x!=43") |
| endif() |
| if(DEFINED CACHE{x}) |
| message(FATAL_ERROR "x shouldn't be found in the cache") |
| endif() |
| |
| set(x) |
| if(DEFINED x) |
| message(FATAL_ERROR "x should be undefined now!") |
| endif() |
| |
| |
| # Cache variable |
| set(BAR "test" CACHE STRING "documentation") |
| if(NOT DEFINED BAR) |
| message(FATAL_ERROR "BAR not defined") |
| endif() |
| |
| if(NOT DEFINED CACHE{BAR}) |
| message(FATAL_ERROR "BAR could not be found by CACHE{BAR}") |
| endif() |
| |
| # Test interaction of cache entries with variables. |
| set(BAR "test-var") |
| if(NOT "$CACHE{BAR}" STREQUAL "test") |
| message(FATAL_ERROR "\$CACHE{BAR} changed by variable BAR") |
| endif() |
| if(NOT "${BAR}" STREQUAL "test-var") |
| message(FATAL_ERROR "\${BAR} not separate from \$CACHE{BAR}") |
| endif() |
| unset(BAR) |
| if(NOT "${BAR}" STREQUAL "test") |
| message(FATAL_ERROR "\${BAR} does not fall through to \$CACHE{BAR}") |
| endif() |
| |
| # Test unsetting of CACHE entry. |
| unset(BAR CACHE) |
| if(DEFINED BAR) |
| message(FATAL_ERROR "BAR still defined") |
| endif() |
| |
| # Test unset(... PARENT_SCOPE) |
| function(unset_zots) |
| if(NOT DEFINED ZOT1) |
| message(FATAL_ERROR "ZOT1 is not defined inside function") |
| endif() |
| if(NOT DEFINED ZOT2) |
| message(FATAL_ERROR "ZOT2 is not defined inside function") |
| endif() |
| unset(ZOT1) |
| unset(ZOT2 PARENT_SCOPE) |
| if(DEFINED ZOT1) |
| message(FATAL_ERROR "ZOT1 is defined inside function after unset") |
| endif() |
| if(NOT DEFINED ZOT2) |
| message(FATAL_ERROR |
| "ZOT2 is not defined inside function after unset(... PARENT_SCOPE)") |
| endif() |
| endfunction() |
| set(ZOT1 1) |
| set(ZOT2 2) |
| unset_zots() |
| if(NOT DEFINED ZOT1) |
| message(FATAL_ERROR "ZOT1 is not still defined after function") |
| endif() |
| if(DEFINED ZOT2) |
| message(FATAL_ERROR "ZOT2 is still defined after function unset PARENT_SCOPE") |
| endif() |
| |
| add_executable(Unset unset.c) |