Kar*_*oor 27 gcc cross-platform build cmake version-detection
是否可以在cmake中检查GCC的次要版本号?
我想做这样的事情:
If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)
Run Code Online (Sandbox Code Playgroud)
ric*_*chq 34
使用if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)onqtam提到的.这个过时的答案是从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()
Run Code Online (Sandbox Code Playgroud)
这将为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()
Run Code Online (Sandbox Code Playgroud)
onq*_*tam 18
从CMake 2.8.10开始,有完全为此目的的变量CMAKE_C_COMPILER_VERSION和CMAKE_CXX_COMPILER_VERSION变量,所以你可以这样做:
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
Run Code Online (Sandbox Code Playgroud)
Ste*_*mer 13
结合其他2个答案,您可以检查具体的gcc版本,如下所示:
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1)
...
endif()
Run Code Online (Sandbox Code Playgroud)