On 11/11/13 17:52, Matthew Woehlke wrote:
> On 2013-11-11 05:13, Daniele E. Domenichelli wrote:
> WCTS, how does one now unset a variable in parent scope?
> 
> I recall some time back there was talk of adding PARENT_SCOPE to 
> unset(). If set() can no longer be used for this purpose, maybe unset() 
> should gain a PARENT_SCOPE option first / at the same time?

According to

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=261c2482

it seems that unset() already supports that...

Anyway, AFAIK you should always have been able to use
set(var PARENT_SCOPE) to unset a variable on the parent scope. But
actually I noticed that my patch broke it, so I just pushed a patch to
restore this behaviour, and added some unit tests to check it.


So, to summarize:

 set(VAR PARENT_SCOPE)
 unset(VAR PARENT_SCOPE)

will unset the variable in the parent scope

 set(VAR "" PARENT_SCOPE)

will instead set an empty variable in the parent scope.


This also means that one can use

 set(VAR ${VAR} PARENT_SCOPE)

to set VAR in the parent scope if the variable in the current scope is
defined and is not empty, otherwise to unset it, or

 set(VAR "${VAR}" PARENT_SCOPE)

to always set a variable VAR in the parent scope, using the value of the
variable in current scope, if it is defined, or an empty string if VAR
is not defined in current scope. This is actually the same exact
behaviour of set(VAR ${FOO}) and set(VAR "${FOO}") for the current scope


Does this seem good enough?


Cheers,
 Daniele
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

Reply via email to