CMake中是否有任何方式要求GCC版本4+;?

CMake中是否有任何方式要求GCC版本4+;?,gcc,cmake,Gcc,Cmake,我正在使用GCC v4+中提供的一些功能,希望CMake找到GCC v4编译器,如果找不到,则返回一个错误,说明需要GCC v4 有人对如何做这样的事情有任何模块/想法吗 谢谢。使用try\u compile()命令并尝试编译以下程序 #if __GNUC__ != 4 #error #endif int main() { return 0; } 实现gcc版本检查的完全不同(不一定更好)的方法如下: if(CMAKE_COMPILER_IS_GNUCXX) exec_program(

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

有人对如何做这样的事情有任何模块/想法吗

谢谢。

使用try\u compile()命令并尝试编译以下程序

#if __GNUC__ != 4
#error
#endif
int main() { return 0; }
实现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")
  ...
...

还有工具链文件,它是。用于指定自定义工具链的。它通常用于交叉编译,但我以前使用过它来让其他工具链工作。

cmake本身可能很快就会有一个解决方案,cf

cmake的未来版本可能包括两个变量:cmake_C_编译器版本cmake_CXX_编译器版本

哈拉斯,我还没有在2.8.8变更日志中看到它们


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

这些新变量在CMake 2.8.10+中变得非常有用,因为它们增加了对其他编译器的支持(如clang),并修复了2.8.9中的C/CXX错误。要查找的宏是CMakeDetermine*编译器。