The issue with unset(BLAH CACHE) is that it removes the cache entry. I want to make BLAH undefined in the current scope, without impacting other scopes.
Re: lookup, thanks; I get that now. On Fri, Aug 17, 2018 at 5:22 AM, Robert Maynard <robert.mayn...@kitware.com> wrote: > > I can never actually make it become undefined > > You can, you are missing unset(BLAH CACHE) to tell CMake you want to > undefine the CACHE varibles > > > I had been operating under the assumption that there was only one active > lookup scope > > Nope CMake lookup is local scope, and than cache. That is how CMake > supports CACHE and local variables with the same name. The rules of > variable lookup are outlined at > https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#variables > On Thu, Aug 16, 2018 at 6:00 PM James Touton <bek...@gmail.com> wrote: > > > > 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.mayn...@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 <bek...@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 > > > > >
-- 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