On Thu, Aug 21, 2008 at 9:01 AM, Brad King <[EMAIL PROTECTED]> wrote:
> Philip Lowman wrote: > > On Wed, Aug 20, 2008 at 10:54 AM, Brad King <[EMAIL PROTECTED] > > <mailto:[EMAIL PROTECTED]>> wrote: > > > > The "set" command already supports unsetting: > > > > set(FOO xyz) > > set(FOO) # unsets > > if(DEFINED FOO) > > message("This message does not appear.") > > endif(DEFINED FOO) > > > > I think it should just be fixed for CACHE and ENV variables. > > > > > > I knew that set() supported unsetting local variables but wasn't sure it > > would be safe to extend it to CACHE and ENV variables as a bugfix. > > Regardless of whether this is appropriate to do or not adding an unset() > > command also seemed to make the language simpler to understand because: > > set(FOO) > > as someone else pointed out, is somewhat confusing. Without referencing > > the documentation many programmers might think this defines a variable > > called FOO and sets it to empty but what it really is doing is > > *undefining* the variable FOO entirely if it exists. > > Okay, I agree. It will be easier and more readable to add the unset > command than to extend the "set" command to "unset" things :) > > However, this: > > unset(MY_CACHE_VARIABLE) > > should not remove the cache entry. It should only unset the CMake > variable. In order to remove the cache entry, we should require > > unset(MY_CACHE_VARIABLE CACHE) > > Otherwise there is no way to remove the variable without removing the > cache entry. > > One nice thing about the unset command is that it doesn't make sense to > provide a value. Therefore we can add extra arguments like 'CACHE' > without ambiguity. That makes sense. Would you like me to fix the patch and resubmit? -- Philip Lowman
_______________________________________________ CMake mailing list [email protected] http://www.cmake.org/mailman/listinfo/cmake
