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_LESSありVERSION_EQUALます。

于 2015-10-22T06:13:46.583 に答える
1

cmake v3.1.3 では、CLANG_VERSION_STRING がなかったため、CMAKE_CXX_COMPILER_VERSION をチェックする必要があったため、コンパイラの種類ごとにバージョンが定義され、より多くの制御が可能になったようです。

于 2015-10-04T19:07:39.520 に答える