Le STREQUAL de CMake ne fonctionne pas

<!-Selon la documentation de CMake, le STREQUAL la comparaison peut prendre soit une VARIABLE, soit une chaîne de caractères comme paramètre. Ainsi, dans cet exemple ci-dessous, le message n'est pas imprimé, ce qui est cassé:

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

Aucune raison pour que cela ne fonctionne pas comme indiqué?

17
demandé sur void.pointer 2011-10-06 20:15:13

2 réponses

le problème était ma cache. J'ai effacé mon cache et reconfiguré et maintenant le code fonctionne.

26
répondu void.pointer 2011-10-06 19:16:18

Je n'ai pas testé votre exemple au début, mais quand je l'ai fait, je vois que votre code fonctionne très bien sur cmake 2.8.0, et les autres combinaisons annoncées dans les docs le font aussi:

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()

sortie:

FUBARTEST Worked
string STREQUAL string works
variable STREQUAL variable works
variable STREQUAL string works
12
répondu Rian Sanderson 2011-10-06 18:20:39