Commit 8424d569 authored by Brad King's avatar Brad King Committed by Kitware Robot
Browse files

Merge topic 'unset-PARENT_SCOPE'

261c2482 unset: Add PARENT_SCOPE option
parents 12a7e2b1 261c2482
......@@ -49,7 +49,13 @@ bool cmUnsetCommand::InitialPass(std::vector<std::string> const& args,
this->Makefile->RemoveCacheDefinition(variable);
return true;
}
// ERROR: second argument isn't CACHE
// unset(VAR PARENT_SCOPE)
else if ((args.size() == 2) && (args[1] == "PARENT_SCOPE"))
{
this->Makefile->RaiseScope(variable, 0);
return true;
}
// ERROR: second argument isn't CACHE or PARENT_SCOPE
else
{
this->SetError("called with an invalid second argument");
......
......@@ -61,10 +61,13 @@ public:
virtual const char* GetFullDocumentation() const
{
return
" unset(<variable> [CACHE])\n"
" unset(<variable> [CACHE | PARENT_SCOPE])\n"
"Removes the specified variable causing it to become undefined. "
"If CACHE is present then the variable is removed from the cache "
"instead of the current scope.\n"
"If PARENT_SCOPE is present then the variable is removed from the "
"scope above the current scope. See the same option in the set() "
"command for further details.\n"
"<variable> can be an environment variable such as:\n"
" unset(ENV{LD_LIBRARY_PATH})\n"
"in which case the variable will be removed from the current "
......
......@@ -51,5 +51,32 @@ 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)
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment