[CMake] Unexpected behavior testing boolean expressions
Timothy M. Shead
tshead at k-3d.com
Wed Jan 30 21:36:24 EST 2008
Folks:
This seems like CMake 101, but I'm running into weird behavior testing
boolean expressions within a macro. I've reproduced the problem using
both 2.4.7 and CVS trunk on Gentoo Linux, presumably it is some subtlety
that I just don't get :)
If I run the following:
set(var YES)
if(var)
message("true")
else(var)
message("false")
endif(var)
I get the expected result:
true
This produces expected results for all of the documented "boolean"
values: YES, NO, TRUE, FALSE, ON, OFF, etc. However, if I pass one of
those values to a macro:
macro(test var)
if(${var})
message("true")
else(${var})
message("false")
endif(${var})
endmacro(test)
test(1)
test(0)
test(YES)
test(NO)
test(TRUE)
test(FALSE)
test(ON)
test(OFF)
Things look pretty strange to me:
true
false
false
false
false
false
false
false
... only "1" tests true! Can anyone shed some light on where I'm going
wrong?
Thanks in advance,
Tim
More information about the CMake
mailing list