cmake'deki küçük versiyon numarasını kontrol etmek mümkün mü?cmake'de gcc minörünü kontrol edin
Böyle bir şey yapmak istiyorum:
If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)
cmake'deki küçük versiyon numarasını kontrol etmek mümkün mü?cmake'de gcc minörünü kontrol edin
Böyle bir şey yapmak istiyorum:
If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)
Kullanım if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
onqtam tarafından belirtildiği gibi. Bu eski cevap 2.6 CMake gününden geri döndü.
gcc -dumpversion
'u çalıştırabilir ve çıktıyı ayrıştırabilirsiniz. Bunu yapmanın bir yolu:
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 sürüm 4.3.1 için "4" ve "3" basar. Eğer biraz daha kolay bir hayat kurmak için sözdizimi denetimi CKağıt sürümünü kullanmak ve düzenli ifade şeyler atlayabilirsiniz Ancak:
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()
Gerçekten faydalı olduğunu keşfettim, teşekkürler. Yeni hattı sürüm numarasından çıkarmanın bir yolu var mı? – Patryk
gcc 7'den itibaren, '-dumpversion' artık '7' çıktılar, bu yüzden bozuk. Cevap, daha taşınabilir olan onqtam tarafından tercih edilir. –
2.8.10 şimdi değişkene sahiptir, ancak gcc'nin -dumpfullversion'un – sherpya
CMake 2.8.10 yana CMAKE_C_COMPILER_VERSION
ve CMAKE_CXX_COMPILER_VERSION
değişkenler size böylece bu amaç için tam olarak vardır bunu yapabilirsiniz: aşağıdaki gibi 2 diğer cevaplar birleştiren
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
olduğunu bilmenizi isteriz. Bu kabul edilen cevap olmalıdır: tüm mevcut ve gelecekteki derleyici sürümleri için daha kısa, daha basit, iyi tanımlanmış. Şu anda (richq tarafından) kabul edilen bir sorunun bir sorunu var: '-dumpversion' artık gcc 7'de 7'yi döndürüyor, bu yüzden kırık bir çözüm. –
, belirli gcc sürümünü kontrol edebilirsiniz:
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1)
...
endif()
olası bir kopyası [Bir asgari derleyici sürüm eki nasıl ekleyebilirim?] (Http://stackoverflow.com/questions/14933172/how-can-i-add-a-minimum-compiler-version-requisite) – sleske
Eğer niyetlerinizi doğru tahmin ediyorsam, bu GCC 5.0, 5.1, 6.0, 6.1, vs'yi yanlış algılayacaktır. – jww