Brad King 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.

Makes sense.

And while you are it.. I currently use: set(var) to read the value
back from the cache (very usefull somtimes), but this is undocumented and extremely none-obvous, so, can we have a "fetch(var)" as well?

Should I formally suggest that via a bug report?


TIA

Fernando Cacciola

_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to