在CMake中有任何方式需要GCC版本4+吗?

时间:2009-01-12 15:12:14

标签: gcc cmake

我正在使用GCC v4 +中提供的一些功能,并希望CMake找到GCC v4编译器,如果找不到,请返回错误,说明需要GCC v4。

任何人都有关于如何做这样的事情的任何模块/想法吗?

感谢。

4 个答案:

答案 0 :(得分:9)

使用try_compile()命令并尝试编译以下程序

#if __GNUC__ != 4
#error
#endif
int main() { return 0; }

答案 1 :(得分: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")
  ...
...

答案 2 :(得分:4)

cmake本身可能很快就会有解决方案,参见http://cmake.3232098.n2.nabble.com/GCC-compiler-version-td7185771.html

cmake的未来版本可能包含两个变量: CMAKE_C_COMPILER_VERSION CMAKE_CXX_COMPILER_VERSION

Halas,我在2.8.8更新日志中还没有看到它们。

我现在使用@cmaker解决方案。

答案 3 :(得分:0)

还有工具链文件,is mentioned on the vtk wiki。这允许您指定自定义工具链。它通常用于交叉编译,但我之前使用它来使其他工具链正常工作。