CMake表达了"更大或更平等"的陈述

Mar*_* A. 18 cmake

我知道在CMake中我可以检查这样的编译器版本

if(MSVC_VERSION LESS 1700)
... // MSVC is lower than MSVC2012
Run Code Online (Sandbox Code Playgroud)

但是我如何用CMake语法表达这个呢?

if(MSVC_VERSION GREATER_OR_EQUAL_TO 1700)
... // MSVC greater or equal to MSVC2012
Run Code Online (Sandbox Code Playgroud)

Com*_*sMS 44

CMake 3.7及更高版本的更新:

CMake的3.7 引入了几个新的比较if,其中GREATER_EQUAL:

if(MSVC_VERSION GREATER_EQUAL 1700)
    [...]
Run Code Online (Sandbox Code Playgroud)

较旧的CMake版本的原始答案:

if((MSVC_VERSION GREATER 1700) OR (MSVC_VERSION EQUAL 1700))
  [...]
Run Code Online (Sandbox Code Playgroud)

或者可能更好,因为它避免重复这个条件:

if(NOT (MSVC_VERSION LESS 1700))
  [...]
Run Code Online (Sandbox Code Playgroud)

  • 对.不幸的是,CMake在某些地方非常简约,这就是其中之一. (5认同)

Ste*_*ggy 5

也许使用VERSION_GREATER_EQUAL?(这也在 CMake 3.7 中引入。)

IE:

if (MSVC_VERSION VERSION_GREATER_EQUAL 1700)
# [...]
Run Code Online (Sandbox Code Playgroud)

VERSION_GREATER_EQUAL 和 VERSION_LESS_EQUAL 还支持多部分版本标识符,例如 14.1.0,也可以正确比较它们。