Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CMake';斯特雷夸尔不工作了_Cmake - Fatal编程技术网

CMake';斯特雷夸尔不工作了

CMake';斯特雷夸尔不工作了,cmake,Cmake,根据CMake文档,允许STREQUAL比较将变量或字符串作为任一参数。因此,在下面的示例中,消息不打印,这是错误的: set( FUBARTEST "OK" ) if( FUBARTEST STREQUAL "OK" ) message( "It Worked" ) endif() 有没有任何原因说明这不起作用?起初我没有测试您的示例,但当我测试时,我发现您的代码在cmake 2.8.0上运行良好,文档中宣传的其他组合也可以: set( FUBARTEST "OK" ) if( FU

根据CMake文档,允许
STREQUAL
比较将变量或字符串作为任一参数。因此,在下面的示例中,消息不打印,这是错误的:

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

有没有任何原因说明这不起作用?

起初我没有测试您的示例,但当我测试时,我发现您的代码在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

问题是我的缓存。我删除了缓存并重新配置了代码,现在代码可以工作了。

使用
而不是
进行字符串比较时,也会发生同样的情况

这行不通:

if( FUBARTEST STREQUAL 'OK' )
    message( "It Worked" )
endif()
这是可行的(除非存在如上所述的缓存问题):


感谢您的测试,但这显然是一个缓存问题:(不确定为什么您被否决了-当CMake行为异常时,这通常是一个有效的解决方案。
if( FUBARTEST STREQUAL "OK" )
    message( "It Worked" )
endif()