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
