[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