CMake 表达“大于或等于”的陈述

问题描述 投票:0回答:3

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

if(MSVC_VERSION LESS 1700)
... // MSVC is lower than MSVC2012

但是我如何用 CMake 语法表达这一点?

if(MSVC_VERSION GREATER_OR_EQUAL_TO 1700)
... // MSVC greater or equal to MSVC2012
cmake
3个回答
52
投票

CMake 3.7 及更高版本更新:

CMake 3.7 if

 引入了一些新的比较
,其中
GREATER_EQUAL
:

if(MSVC_VERSION GREATER_EQUAL 1700)
    [...]

旧版 CMake 的原始答案:

if((MSVC_VERSION GREATER 1700) OR (MSVC_VERSION EQUAL 1700))
  [...]

或者可能更好,因为它避免重复这种情况:

if(NOT (MSVC_VERSION LESS 1700))
  [...]

5
投票

也许可以使用

VERSION_GREATER_EQUAL
? (CMake 3.7 中也引入了这一点。)

即:

if (MSVC_VERSION VERSION_GREATER_EQUAL 1700)
# [...]

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


1
投票

在 3.7 中引入了 GREATER_EQUAL 和 LESS_EQUAL。

© www.soinside.com 2019 - 2024. All rights reserved.