[CMake] How to compare booleans
David Cole
david.cole at kitware.com
Tue Aug 7 14:20:29 EDT 2012
EQUAL is meant for exact numeric equal comparison (i.e. -- works with
numbers only, not meant to work with booleans)
One possibility is:
if(_COMPILE_RESULT)
set(_COMPILE_RESULT 1)
else()
set(_COMPILE_RESULT 0)
endif()
if(SHOULD_COMPILE)
set(SHOULD_COMPILE 1)
else()
set(SHOULD_COMPILE 0)
endif()
if(_COMPILE_RESULT EQUAL SHOULD_COMPILE)
...
Or make new tmp vars if you can't adjust the vars in-the-same-name like that...
On Thu, Aug 2, 2012 at 6:49 PM, Rolf Eike Beer <eike at sf-mail.de> wrote:
> I have 2 variables that hold boolean values. One is the result of a
> try_compile() and the other has the expected outcome. Now I want to check if
> the expectation is correct, so I tried:
>
> if (_COMPILE_RESULT EQUAL SHOULD_COMPILE)
>
> Which works if both are true or different, but the result is "false" if both
> variables are false, too. I played around with expanding the variables or
> quoting, but no change. The only way I got the expected result was this:
>
> if (_COMPILE_RESULT EQUAL SHOULD_COMPILE OR (NOT _COMPILE_RESULT) EQUAL (NOT
> SHOULD_COMPILE)
>
> This is not really what I would have expected. Is there a less ugly way to get
> the expected result?
>
> Eike
> --
> --
>
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
More information about the CMake
mailing list