Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
CMake
CMake
Commits
8424d569
Commit
8424d569
authored
Oct 09, 2013
by
Brad King
Committed by
Kitware Robot
Oct 09, 2013
Browse files
Merge topic 'unset-PARENT_SCOPE'
261c2482
unset: Add PARENT_SCOPE option
parents
12a7e2b1
261c2482
Changes
3
Hide whitespace changes
Inline
Side-by-side
Source/cmUnsetCommand.cxx
View file @
8424d569
...
...
@@ -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"
);
...
...
Source/cmUnsetCommand.h
View file @
8424d569
...
...
@@ -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 "
...
...
Tests/Unset/CMakeLists.txt
View file @
8424d569
...
...
@@ -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
)
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment