5

如何为 clang++ 实现相当于下面的 cmake 分支?

if (GXX_VERSION VERSION_GREATER 4.5 OR GXX_VERSION VERSION_EQUAL 4.5)
    ...

谢谢,

4

4 回答 4

9

由于某种原因 piokuc 的解决方案对我不起作用,所以我做了以下事情:

EXECUTE_PROCESS( COMMAND ${CMAKE_CXX_COMPILER} --version OUTPUT_VARIABLE clang_full_version_string )
string (REGEX REPLACE ".*clang version ([0-9]+\\.[0-9]+).*" "\\1" CLANG_VERSION_STRING ${clang_full_version_string})
if (CLANG_VERSION_STRING VERSION_GREATER 3.1)
     ....
于 2013-04-25T08:19:08.787 回答
3

CMake 为 clang 定义了以下内容:

  • CLANG_VERSION_MAJOR,
  • CLANG_VERSION_MINOR,
  • CLANG_VERSION_PATCHLEVEL,
  • 以及以上的组合:CLANG_VERSION_STRING
于 2013-04-22T16:11:29.533 回答
2

这对我有用:

if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 3.2)
    ...
    ...
endif ()

同样,我们有VERSION_LESSVERSION_EQUAL

于 2015-10-22T06:13:46.583 回答
1

在 cmake v3.1.3 下,我必须检查 CMAKE_CXX_COMPILER_VERSION 因为没有 CLANG_VERSION_STRING 所以看起来现在为每个编译器类型定义了一个版本,提供了更多控制。

于 2015-10-04T19:07:39.520 回答