CMake defines "FALSE" as a string that's empty, 0, N, NO, OFF, FALSE,
NOTFOUND, or <variable>-NOTFOUND.  I just realized that my regexes are
not safe with respect to capturing the letter "n".

set(sillystring "The rain in spain")
string(REGEX MATCH
  ".$"
  thematch "${sillystring}")
if(thematch)
  message("regex works")
else(thematch)
  message("regex doesn't work")
endif(thematch)

C:\devel\src\cbugs\trueorfalse>cmake -P trueorfalse.cmake
n is false
regex doesn't work


What's so great about "n" and "no" ?  I've never used them.  Do we
really need to be polluting the interpretation of strings with these
values?  What current or legacy code is using them heavily?

ON and OFF are used in the Options, but why can't these just be TRUE
and FALSE, so that there's less variety of how we specify TRUE and
FALSE?  Alternately, how about defining a boolean storage type to hold
options?

How about a numerical storage type, so that 0 and "0" aren't the same
thing?  And so that we don't have to type MATH(EXPR var "${var} - 1"),
we could just type var = var - 1.  The problem with assuming that "0"
means FALSE, is it assumes I got my "0" by counting with a MATH
expression.  What if I got my "0" by matching with a regex, like a
digit of a library version?

"-NOTFOUND" doesn't trouble me so much, as it's unlikely to be
accidentally matched in a regex.


Cheers,
Brandon Van Every
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to