33

cmakeでGCCのマイナーバージョン番号を確認することはできますか?

私はこのようなことをしたい:

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

4 に答える 4

39

if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)onqtam で述べたように使用します。この時代遅れの回答は、2.6 CMake の時代から戻ってきました。

出力を実行gcc -dumpversionして解析できます。これを行う1つの方法は次のとおりです。

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()

于 2010-10-31T23:34:24.507 に答える
22

他の 2 つの回答を組み合わせて、次のように特定の gcc バージョンを確認できます。

if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1)
    ...
endif()
于 2016-08-23T21:28:31.810 に答える