2013-04-22 26 views

回答

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) 
    .... 
3

CMake的定義以下爲鐺:

  • CLANG_VERSION_MAJOR,
  • CLANG_VERSION_MINOR,
  • CLANG_VERSION_PATCHLEVEL,
  • 和上述的組合:CLANG_VERSION_STRING
+1

需要做些事情來獲得這些變量嗎? 使用CMake 2.8.10.1我不能使用它們開箱 – 2013-04-23 07:42:45

+0

你用CMAKE_CXX_COMPILER =/path/to/clang ++調用了clang嗎? – piokuc 2013-04-23 09:14:04

+0

你也可以像這樣在你的CMakeFiles.txt中添加'find_package(Clang REQUIRED)':https://github.com/Fadis/libdcompile/blob/master/CMakeLists.txt – piokuc 2013-04-23 09:16:34

1

在cmake的v3.1.3我不得不檢查CMAKE_CXX_COMPILER_VERSION因爲沒有CLANG_VERSION_STRING所以看起來像一個版本現在爲每種編譯器類型定義了更多的控制權。

0

這個工作對我來說:

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

同樣,我們有VERSION_LESSVERSION_EQUAL