È possibile controllare il numero di versione minore di GCC in cmake?Controllare gcc minor in cmake
voglio fare qualcosa di simile:
If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)
È possibile controllare il numero di versione minore di GCC in cmake?Controllare gcc minor in cmake
voglio fare qualcosa di simile:
If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)
Usa if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
come detto da onqtam. Questa risposta obsoleta era tornata dai giorni di CMake 2.6.
È possibile eseguire
gcc -dumpversion
e analizzare l'output. Ecco un modo per farlo:
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()
Che sarebbe stampare "4" e "3" per gcc version 4.3.1. Tuttavia è possibile utilizzare la versione di CMake il controllo della sintassi per rendere la vita un po 'più facile e saltare la roba regex:
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()
L'ho trovato davvero utile, grazie. C'è un modo per rimuovere la nuova riga dal numero di versione? – Patryk
A partire da gcc 7, '-dumpversion' ora emette semplicemente' 7', quindi è rotto. Preferisco la risposta di onqtam che è molto più portabile. –
2.8.10 ha ora la variabile, ma potreste voler sapere che gcc ha -dumpfullversion – sherpya
Dal CMake 2.8.10 ci sono le variabili CMAKE_C_COMPILER_VERSION
e CMAKE_CXX_COMPILER_VERSION
esattamente per questo scopo in modo da può fare questo:
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
Questa dovrebbe essere la risposta accettata: più breve, più semplice, ben definita per tutte le versioni del compilatore attuali e future. La risposta accettata adesso (da richq) ha un problema: '-dumpversion' ora restituisce' 7' in gcc 7, quindi è una soluzione non funzionante. –
Combinando gli altri 2 risposte, è possibile controllare la versione specifica di gcc come segue:
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1)
...
endif()
possibile duplicato di [Come posso aggiungere un requisito minimo per la versione del compilatore?] (Http://stackoverflow.com/questions/14933172/how-can-i-add-a-minimum-compiler-version-requisite) – sleske
Se indovino le vostre intenzioni correttamente, questo rivelerà erroneamente GCC 5.0, 5.1, 6.0, 6.1, ecc. – jww