2013-01-23 30 views
6

सीधे बाश से एक्सकोडबिल्ड का उपयोग करके, किसी को विफलता का पता कैसे लगाया जाएगा? बाहर निकलें कोड हमेशा 0 परवाह किए बिना है। मुझे एहसास है कि एक "विफल" या "सफल" बनावट आउटपुट है, लेकिन क्या कोई और शानदार तरीका नहीं है?ओएसएक्स/बैश - निर्माण विफलता का पता लगाने

इसके अलावा, मैं कभी-कभी "मेक" (विशेष रूप से मेरे क्यूटी आधारित बिल्डों के साथ) का उपयोग करता हूं। क्या निर्माण स्क्रिप्ट से मेक विफल होने का कोई तरीका है?

+0

आप http://stackoverflow.com/questions/7363459/how-to-get-the-return-value-of-xcodebuild/10808467#10808467 को देखा है? –

+1

तो xcodebuild .... || बाहर निकलें 1 विफलता पर निकास कोड 1 के साथ स्क्रिप्ट से बाहर निकल जाएगा? क्या यह असफल होने पर एक्सकोडबिल्ड पर वास्तव में बाहर निकलने वाला कोड> 0 देने पर निर्भर नहीं है? मैंने सोचा कि यह ऐसा नहीं करता है। – JasonGenX

उत्तर

1

शायद यह एक्सकोड के संस्करण पर निर्भर करता है या संभवतः यह कैसे विफल हो जाता है। जब मैं $ चेक करता हूं तो मुझे यही मिलता है? कुछ फ़ाइलों को शामिल करने के बाद:

[email protected]:~/Source/icanvas/iCanvas-project (release/icanvas-1.9 %) $ xcodebuild 
... 
/Users/davidb/Source/icanvas/iCanvas-project/iCanvas-target/iPhone/ConversationViewController.m:21:9: fatal error: 'CanvasKit/CKActionSheetWithBlocks.h' file not found 
#import "CanvasKit/CKActionSheetWithBlocks.h" 
     ^
1 error generated. 
... 
** BUILD FAILED ** 
... 
(5 failures) 
[email protected]:~/Source/icanvas/iCanvas-project (release/icanvas-1.9 %) $ echo $? 
65 
6

बिल्डोड विफल होने पर भी xcodebuild हमेशा 0 लौटाता है। त्रुटियों का पता लगाने के लिए, आप इस तरह एक स्क्रिप्ट का उपयोग कर सकते हैं:

build_errors_file=build_errors.log 

# Pipe errors to file 
xcodebuild 2>$build_errors_file 

errors=`grep -wc "The following build commands failed" $build_errors_file` 
if [ "$errors" != "0" ] 
then 
    echo "BUILD FAILED. Error Log:" 
    cat $build_errors_file 
    rm $build_errors_file 
    exit 1 
fi 
rm $build_errors_file 

# ... continue 

मैं सत्यापित है कि ** BUILD विफल ** जब संग्रह के विकल्प के साथ xcodebuild चल प्रिंट नहीं होगा, तो यह है कि देखने के लिए स्ट्रिंग लगता है 'निम्नलिखित बिल्ड कमांड विफल'।

+0

इसके लिए धन्यवाद। मैंने स्ट्रिंग "त्रुटि" पर शब्द गणना की भी कोशिश की और ऐसा लगता है कि यह पर्याप्त है। (जब तक कि आपके सभी वर्गों या किसी चीज़ पर "त्रुटि" शब्द न हो) – kevinl

0

बाहर निकलें कोड हमेशा 0.

मुझे लगता है कि आप एक खोल स्क्रिप्ट से xcodebuild चल रहे थे नहीं है।

आप अपनी स्क्रिप्ट फ़ाइल से आगे #!/Bin/bash -e डाल सकते हैं।

https://stackoverflow.com/a/40808843/2705627