7

GCC v4+ で提供されているいくつかの機能を使用しており、CMake に GCC v4 コンパイラを見つけてもらいたいのですが、見つからない場合は、GCC v4 が必要であることを示すエラーを返します。

このようなことを行う方法に関するモジュール/アイデアはありますか?

ありがとう。

4

4 に答える 4

9

try_compile()コマンドを使用して、次のプログラムをコンパイルしてみてください

#if __GNUC__ != 4
#error
#endif
int main() { return 0; }
于 2009-01-12T15:38:28.490 に答える
8

gcc バージョン チェックを実装するためのまったく異なる (必ずしもより良いとは限りません) 方法は、次のようになります。

if(CMAKE_COMPILER_IS_GNUCXX)
  exec_program(
      ${CMAKE_CXX_COMPILER}
      ARGS                    --version
      OUTPUT_VARIABLE _compiler_output)
  string(REGEX REPLACE ".* ([0-9]\\.[0-9]\\.[0-9]) .*" "\\1"
         gcc_compiler_version ${_compiler_output})
  message(STATUS "C++ compiler version: ${gcc_compiler_version} [${CMAKE_CXX_COMPILER}]")

  if(gcc_compiler_version MATCHES "4\\.[0-9]\\.[0-9]")
    message(FATAL_ERROR "foobar")
    ...

  if(gcc_compiler_version VERSION_GREATER "4.5.99")
  ...
...
于 2011-07-04T11:11:17.367 に答える
4

間もなくcmake自体に解決策があるかもしれません。http://cmake.3232098.n2.nabble.com/GCC-compiler-version-td7185771.html

cmakeの将来のリリースには、 CMAKE_C_COMPILER_VERSIONCMAKE_CXX_COMPILER_VERSIONの2つの変数が含まれる可能性があります。

ハラス、2.8.8の変更ログではまだ見ていません。

今のところ@cmakerソリューションを使用しています。

于 2012-08-21T13:13:52.803 に答える
0

vtk wiki で言及されているツールチェーン ファイルもあります。これにより、カスタム ツールチェーンを指定できます。通常、クロスコンパイルに使用されますが、以前は他のツールチェーンを機能させるために使用していました。

于 2011-10-27T14:35:21.853 に答える