CMake:关于clang版本的分支

时间:2013-04-22 15:29:06

标签: c++ cmake

如何为clang ++实现下面的cmake分支的等价物?

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

谢谢,

4 个答案:

答案 0 :(得分:7)

出于某种原因,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)
     ....

答案 1 :(得分:3)

CMake为clang定义了以下内容:

  • CLANG_VERSION_MAJOR,
  • CLANG_VERSION_MINOR,
  • CLANG_VERSION_PATCHLEVEL,
  • 以及上述内容的组合:CLANG_VERSION_STRING

答案 2 :(得分:1)

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

答案 3 :(得分:0)

这对我有用:

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

同样,我们有VERSION_LESSVERSION_EQUAL