त्रुटि उत्पन्न करने के लिए CMAKE का कारण बनें


136

किसी विशेष शर्त पर त्रुटि उत्पन्न करने के लिए मैं CMAKE कैसे प्राप्त कर सकता हूं। यही है, मैं कुछ इस तरह चाहते हैं:

if( SOME_COND )
  error( "You can't do that" )
endif()

जवाबों:


185

message()विधि मोड के लिए एक वैकल्पिक तर्क है, की अनुमति देता है STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, और FATAL_ERRORSTATUSसंदेश stdout में जाते हैं। संदेश का हर दूसरा मोड, जिसमें कोई नहीं है, stderr पर जाता है।

आप चाहते हैं SEND_ERRORकि आप कोई त्रुटि उत्पन्न करना चाहते हैं, लेकिन प्रसंस्करण जारी रखें। आप चाहते हैं FATAL_ERRORअगर आप CMake प्रसंस्करण बाहर निकलना चाहते।

कुछ इस तरह:

if( SOME_COND )
  message( SEND_ERROR "You can't do that" )
elseif( SOME_CRITICAL_COND )
  message( FATAL_ERROR "You can not do this at all, CMake will exit." )
endif()

1
बिल्ली क्या है AUTHOR_WARNING?
एलेक्सिस विलके

1
@AlexisWilke: CMake डॉक्स स्थिति AUTHOR_WARNING = CMake Warning (dev), continue processing, यह सुझाव देती है कि इसका उपयोग CMake स्क्रिप्ट को डीबग करने के लिए किया जाना है। बस एक जंगली अनुमान है।
pauluss86

5
@AlexisWilke AUTHOR_WARNINGएक चेतावनी को इंगित करता है जो अंतिम उपयोगकर्ता के लिए उपयोगी नहीं है, लेकिन डेवलपर्स के लिए। यह या तो उन्हें कुछ हैक / टॉड को ठीक करने के लिए याद दिला सकता है या चेतावनी को इंगित कर सकता है जिसे ठीक किया जाना चाहिए लेकिन उपयोगकर्ता के लिए चलने वाले CMake को प्रभावित नहीं करता है। यही कारण है कि उपयोगकर्ता इन चेतावनियों को दबा सकता है --Wno-dev
usr1234567

2
CMake अब कई कि साथ अधिक संदेश मोड message(), सहित VERBOSE, DEBUGऔर TRACE
स्क्वेर्स्किटल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.