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