mirror of
https://github.com/reactos/CMake.git
synced 2024-12-16 16:16:33 +00:00
261c248254
Add an unset() command option to remove a variable from the calling scope, just like the set() command's PARENT_SCOPE option. Teach the Unset test to cover such cases.
83 lines
1.9 KiB
CMake
83 lines
1.9 KiB
CMake
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()
|
|
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()
|
|
|
|
# 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)
|