On 03/26/2018 08:07 AM, Craig Scott wrote: > Am I missing something, or is the following result surprising to others as > well: > > set(somevar YES) > if ("somevar") > message("Get here if CMP0054 is OLD (seems okay)") > else() > message("Get here if CMP0054 is NEW (surprising?)") > endif() > > I would have thought that even with CMP0054 being NEW, the if condition would > still evaluate to true since it is going to test a non-empty string that > doesn't match any of the defined false constants.
The observed behavior is consistent with the documentation. `if(<constant>)` enumerates a set of true/false constants and says that if it is not one of these then it uses `if(<variable|string>)`. That is true only if it is a variable that is defined to a value that is not a false constant. With CMP0054 NEW behavior, `if("string")` is always treated as the *string* variant which is never a variable defined to anything. -Brad -- 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