[CMake] IF(string) is false. Why?

Brandon Van Every bvanevery at gmail.com
Tue Oct 30 20:14:50 EDT 2007


On 10/30/07, David Cole <david.cole at kitware.com> wrote:
> Because "WHATEVER" is not empty...

Then it should be true.

> I frequently use:
> IF("${literal_string}" STREQUAL "")
>
> or:
> IF(NOT "${literal_string}" STREQUAL "")
>
> ...to achieve this goal. It's verbose, but it works and doesn't take too
> much getting used to.

Doesn't work.  With or without quotes, it fails.

MACRO(NOQUOTES_ALONE literal_string result)
  IF(${literal_string})
    SET(result "valid")
  ELSE(${literal_string})
    MESSAGE(SEND_ERROR "I don't like the input!")
  ENDIF(${literal_string})
ENDMACRO(NOQUOTES_ALONE)
NOQUOTES_ALONE("WHATEVER" out)

MACRO(NOQUOTES_STREQUAL literal_string result)
  IF(${literal_string} STREQUAL "")
    SET(result "valid")
  ELSE(${literal_string} STREQUAL "")
    MESSAGE(SEND_ERROR "I don't like the input!")
  ENDIF(${literal_string} STREQUAL "")
ENDMACRO(NOQUOTES_STREQUAL)
NOQUOTES_STREQUAL("WHATEVER" out)

MACRO(QUOTES_STREQUAL literal_string result)
  IF("${literal_string}" STREQUAL "")
    SET(result "valid")
  ELSE("${literal_string}" STREQUAL "")
    MESSAGE(SEND_ERROR "I don't like the input!")
  ENDIF("${literal_string}" STREQUAL "")
ENDMACRO(QUOTES_STREQUAL)
QUOTES_STREQUAL("WHATEVER" out)

C:\devel\src\cbugs\trueorfalse>cmake -P trueorfalse.cmake
CMake Error: I don't like the input!
CMake Error: I don't like the input!
CMake Error: I don't like the input!


Cheers,
Brandon Van Every


More information about the CMake mailing list