gcc - 在 cmake 中检查 gcc 次要

是否可以在cmake中查看GCC的次要版本号?

我想做这样的事情:

If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)

最佳答案

使用 onqtam 提到的 if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)。这个过时的答案是从 2.6 CMake 时代回来的。

你可以运行 gcc -dumpversion 并解析输出。这是一种方法:

if (CMAKE_COMPILER_IS_GNUCC)
    execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
                    OUTPUT_VARIABLE GCC_VERSION)
    string(REGEX MATCHALL "[0-9]+" GCC_VERSION_COMPONENTS ${GCC_VERSION})
    list(GET GCC_VERSION_COMPONENTS 0 GCC_MAJOR)
    list(GET GCC_VERSION_COMPONENTS 1 GCC_MINOR)

    message(STATUS ${GCC_MAJOR})
    message(STATUS ${GCC_MINOR})
endif()

对于 gcc 版本 4.3.1,这将打印“4”和“3”。但是,您可以使用 CMake 的版本检查语法让生活更轻松一些,并跳过正则表达式的内容:

execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpversion
                OUTPUT_VARIABLE GCC_VERSION)
if (GCC_VERSION VERSION_GREATER 4.3 OR GCC_VERSION VERSION_EQUAL 4.3)
        message(STATUS "Version >= 4.3")
endif()

https://stackoverflow.com/questions/4058565/

相关文章:

build - Xcode 4 术语 "Build for testing/Build for ru

python - 在不运行测试的情况下制作(从源代码安装)python

android - com.android.ddmlib.AdbCommandRejectedExc

android - Visual Studio 2015 Xamarin 部署失败,没有任何错误消息

c - 这个错误是什么意思: `somefile.c:200: error: the frame s

build-process - 改进您的构建过程

go - 如何使用 Golang 包以外的名称构建可执行文件

python - 问题构建 cx_Oracle - libclntsh.so.11.1 => 未找到

android - 如何以编程方式读取我的 Android apk 的构建日期?

android - 使用没有运行的 Eclipse 重建 .apk