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.8.8 更新日志中看到它们。

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

于 2012-08-21T13:13:52.803 回答
0

还有工具链文件,在 vtk wiki 上提到过。这使您可以指定自定义工具链。它通常用于交叉编译,但我以前用它来让其他工具链工作。

于 2011-10-27T14:35:21.853 回答