CMake STREQUAL не работает - PullRequest
       3

CMake STREQUAL не работает

18 голосов
/ 06 октября 2011

Согласно документации CMake, для сравнения STREQUAL в качестве любого параметра допускается использовать переменный или STRING. Итак, в этом примере ниже сообщение НЕ печатается, что не работает:

set( FUBARTEST "OK" )
if( FUBARTEST STREQUAL "OK" )
    message( "It Worked" )
endif()

Любая причина, почему это не работает, как задокументировано?

Ответы [ 3 ]

28 голосов
/ 06 октября 2011

Проблема была в моем кеше. Я удалил свой кеш и перенастроил, и теперь код работает.

15 голосов
/ 06 октября 2011

Сначала я не проверял ваш пример, но когда я это сделал, я вижу, что ваш код отлично работает на cmake 2.8.0, и другие комбинации, объявленные в документации, тоже делают:

set( FUBARTEST "OK" )
if( FUBARTEST STREQUAL "OK" )
    message( "FUBARTEST Worked" )
else()
    message( "FUBARTEST FAILED" )
endif()

set( FOO "OK" )
if( ${FOO} STREQUAL "OK" )
    message("string STREQUAL string works" )
else ()
    message("string STREQUAL string FAILED" )

endif()

set( FOO "OK" )
set( BAR "OK" )
if( FOO STREQUAL BAR )
    message("variable STREQUAL variable works" )
else ()
    message("variable STREQUAL variable FAILED" )

endif()

set( FOO "OK" )
if( FOO STREQUAL "OK" )
    message("variable STREQUAL string works" )
else ()
    message("variable STREQUAL string FAILED" )

endif()

дает вывод:

FUBARTEST Worked
string STREQUAL string works
variable STREQUAL variable works
variable STREQUAL string works
0 голосов
/ 29 мая 2019

То же самое происходит при использовании ' вместо " для сравнения строк

Это не будет работать:

if( FUBARTEST STREQUAL 'OK' )
    message( "It Worked" )
endif()

Это работает (кроме случаев, когда естьпроблема с кешем, как указано выше):

if( FUBARTEST STREQUAL "OK" )
    message( "It Worked" )
endif()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...