CMake';斯特雷夸尔不工作了
根据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
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()