[CMake] Unexpected behavior testing boolean expressions
Alan W. Irwin
irwin at beluga.phys.uvic.ca
Wed Jan 30 21:53:12 EST 2008
On 2008-01-30 19:36-0700 Timothy M. Shead wrote:
> [...]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?
When running up against problems like this I use message within the macro to
see exactly what is going on. My guess is YES, etc., are being interpreted
as (undefined) variable names so you should try quotes, e.g., test("YES") or
else
set(x YES)
test(x)
Alan
__________________________
Alan W. Irwin
Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).
Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__________________________
Linux-powered Science
__________________________
More information about the CMake
mailing list