【问题标题】:Any way in CMake to require GCC version 4+?CMake 中的任何方式都需要 GCC 版本 4+?
【发布时间】:2009-01-12 15:12:14
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: gcc cmake


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      实现 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")
        ...
      ...
      

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

        • 这些新变量在 CMake 2.8.10+ 中变得非常有用,因为它们添加了对其他编译器(例如 clang)的支持并修复了 2.8.9 中的 C/CXX 拼写错误kitware.com/blog/home/post/408 要查看的宏因为是 CMakeDetermine*Compiler。
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2017-08-29
          • 2019-02-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-27
          • 1970-01-01
          • 1970-01-01
          • 2021-04-12
          相关资源
          最近更新 更多