क्या सेमेक में जीसीसी के मामूली संस्करण संख्या की जांच करना संभव है?सेमीकेक में जीसीसी नाबालिग की जांच करें
मैं इस तरह कुछ करना चाहता हूँ:
If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)
क्या सेमेक में जीसीसी के मामूली संस्करण संख्या की जांच करना संभव है?सेमीकेक में जीसीसी नाबालिग की जांच करें
मैं इस तरह कुछ करना चाहता हूँ:
If (GCC_MAJOR >= 4 && GCC_MINOR >= 3)
उपयोग if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
रूप onqtam द्वारा उल्लेख किया है। यह अप्रचलित उत्तर 2.6 सीएमके दिनों से वापस था।
आप
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()
जो जीसीसी संस्करण 4.3.1 के लिए "4" और "3" प्रिंट करेगा। लेकिन अगर आप वाक्य रचना की जाँच के जीवन थोड़ा आसान बनाने के लिए CMake के संस्करण का उपयोग करें और 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()
मैंने पाया कि वास्तव में उपयोगी, धन्यवाद। संस्करण संख्या से नई लाइन को पट्टी करने का कोई तरीका है? – Patryk
जीसीसी 7 के रूप में, '-डम्पवर्जन' अब केवल '7' आउटपुट करता है, इसलिए यह टूटा हुआ है। ऑनक्टाम द्वारा उत्तर पसंद करें जो कहीं अधिक पोर्टेबल है। –
2.8.10 अब परिवर्तनीय है, लेकिन आप यह जानना चाहेंगे कि gcc है -dumpfullversion – sherpya
CMake 2.8.10 के बाद से वहाँ CMAKE_C_COMPILER_VERSION
और CMAKE_CXX_COMPILER_VERSION
चर वास्तव में तो आप इस उद्देश्य के लिए कर रहे हैं यह कर सकते हैं:
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.2)
यह स्वीकार्य उत्तर होना चाहिए: सभी वर्तमान और भविष्य के कंपाइलर संस्करणों के लिए छोटे, सरल, अच्छी तरह परिभाषित। उत्तर अभी स्वीकार किया गया है (richq द्वारा) में एक समस्या है: '-डम्पवर्जन' अब जीसीसी 7 में '7' देता है, इसलिए यह एक टूटा समाधान है। –
2 अन्य उत्तर के संयोजन, आप विशिष्ट जीसीसी संस्करण निम्नानुसार जाँच कर सकते हैं:
if (CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.1)
...
endif()
संभावित डुप्लिकेट [मैं न्यूनतम संकलक संस्करण को कैसे जोड़ सकता हूं?] (Http://stackoverflow.com/questions/14933172/how-can-i-add-a-minimum-compiler-version-requisite) – sleske
यदि मैं आपके इरादों को सही तरीके से अनुमान लगा रहा हूं, तो यह जीसीसी 5.0, 5.1, 6.0, 6.1, आदि का गलत पता लगाएगा – jww