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