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

Reply via email to