[cmake-developers] unset and cache variables

James Touton bekenn at gmail.com
Thu Aug 16 18:00:19 EDT 2018


Fair enough, but I think that makes the command substantially less useful.
It means that I need to use set(BLAH "") if I want to empty a variable of
its contents, and I can never actually make it become undefined, counter to
the claim in the documentation:

set(BLAH blah CACHE INTERNAL "")
unset(BLAH)
if(DEFINED BLAH)
    message("here") # this message gets printed!
endif()

I am now effectively subject to sabotage from above.

I had been operating under the assumption that there was only one active
lookup scope, constructed from the previous lookup scope and any new
sets/unsets at the current level.  I therefore expected that if a variable
were removed from "the" current scope, it would be inaccessible.

On Thu, Aug 16, 2018 at 2:46 PM, Robert Maynard <robert.maynard at kitware.com>
wrote:

> Looking at the current docs (
> https://cmake.org/cmake/help/v3.12/command/unset.html ) I think the
> first paragraph needs to be read as a single statement to understand
> the behavior.
>
> "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."
>
> I think we can be more explicit by rephrasing as:
>
> "Makes the local variable variable from the current scope be
> undefined, If CACHE is present then instead the cache variable is
> undefined."
> On Thu, Aug 16, 2018 at 5:38 PM James Touton <bekenn at gmail.com> wrote:
> >
> > I just recently came across this:
> >
> > set(BLAH blah CACHE INTERNAL "")
> > unset(BLAH)
> > message("BLAH: ${BLAH}")
> >
> > Surprisingly (to me), this prints out "blah".  I had expected the unset
> command to make the cached value inaccessible.  The documentation just
> states that the function "[r]emoves the specified variable causing it to
> become undefined."  Is this a bug?  I would prefer for the function to
> guarantee that ${BLAH} comes up empty.
> > --
> >
> > Powered by www.kitware.com
> >
> > Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
> >
> > Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
> >
> > CMake Support: http://cmake.org/cmake/help/support.html
> > CMake Consulting: http://cmake.org/cmake/help/consulting.html
> > CMake Training Courses: http://cmake.org/cmake/help/training.html
> >
> > Visit other Kitware open-source projects at http://www.kitware.com/
> opensource/opensource.html
> >
> > Follow this link to subscribe/unsubscribe:
> > https://cmake.org/mailman/listinfo/cmake-developers
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake-developers/attachments/20180816/0e681276/attachment.html>


More information about the cmake-developers mailing list