2016-08-29 7 views
6

सी पूर्व प्रोसेसर यह करने के लिए आम है के साथ,जंग में सीएफजी का उपयोग कर रिलीज/डीबग बिल्ड कैसे जांचें?

#if defined(NDEBUG) 
    // release build 
#endif 

#if defined(DEBUG) 
    // debug build 
#endif 

कार्गो के किसी न किसी समकक्ष हैं:

  • रिहाई के लिए cargo build --release। डीबग के लिए
  • cargo build

जंग का #[cfg(...)] विशेषता या !cfg(...) मैक्रो कुछ ऐसा करने के लिए उपयोग किया जाएगा?

मैं समझता हूं कि जंग का प्री-प्रोसेसर सी की तरह काम नहीं करता है। मैंने प्रलेखन की जांच की और this page lists some attributesसकता है (यह मानते हुए इस सूची व्यापक है)

debug_assertions जाँच की जा सकता है, लेकिन यह जब अधिक सामान्य डिबगिंग मामले की जांच करने के लिए प्रयोग किया जाता भ्रामक हो।

मुझे यकीन नहीं है कि यह प्रश्न कार्गो से संबंधित होना चाहिए या नहीं।

+1

@ शेमपस्टर यह [इस सवाल] के समान है (http://stackoverflow.com/questions/30786738/how-to-redefine-a-macro/30787006?s=2%7C2.4527)। – antoyo

उत्तर

9

आप #[cfg(debug_assertions)] का उपयोग कर सकते हैं। इसे this discussion में ऐसा करने का सही तरीका बताया गया था। अभी के लिए कोई और उपयुक्त अंतर्निहित स्थिति नहीं है।

reference से:

debug_assertions - डिफ़ॉल्ट रूप से सक्षम किया गया जब अनुकूलन के बिना संकलन। इसका उपयोग विकास में अतिरिक्त डिबगिंग कोड को सक्षम करने के लिए किया जा सकता है लेकिन उत्पादन में नहीं। उदाहरण के लिए, यह मानक पुस्तकालय के debug_assert! मैक्रो की व्यवहार नियंत्रित करता है।

एक वैकल्पिक, थोड़ा जटिल तरीके से दिखाया गया है here, #[cfg(feature = "debug")] का उपयोग करें और एक निर्माण स्क्रिप्ट है जो आपके टोकरा के लिए "डिबग" सुविधा को सक्षम बनाने के लिए है।

संबंधित मुद्दे