相关疑难解决方法(0)

与STREQUAL失败的CMake比较空字符串

我一直认为,如果你想比较两个字符串(但不是变量),你需要做的就是引用它:

if("${A}" STREQUAL "some string")
Run Code Online (Sandbox Code Playgroud)

但现在我发现这段代码有时打印出来oops:

cmake_minimum_required(VERSION 2.8)

if("d" STREQUAL "")
  message("oops...")
endif()
Run Code Online (Sandbox Code Playgroud)

可能是它的错误(因为它用Xcode打印,但不是用make打印)?还是有一些特殊的变量?

  • cmake:2.8.12,2.8.11.2
  • xcode:4.6.2,5.0.1

更新

有没有描述问题的命令字符串:

string(COMPARE EQUAL "${A}" "" result)
if(result)
  message("...")
endif()
Run Code Online (Sandbox Code Playgroud)

更新2

我期望从CMake 3.1.0开始实现的行为(参见CMP0054).

3.0.2 测试的输出:

CMake version: 3.0.2
Quoted test
Surprise!
Unquoted test
Surprise!
Run Code Online (Sandbox Code Playgroud)

3.1.0 测试的输出:

CMake version: 3.1.0
Quoted test
OK
Unquoted test
Surprise!
Run Code Online (Sandbox Code Playgroud)

cmake

26
推荐指数
2
解决办法
2万
查看次数

标签 统计

cmake ×1