2013-01-23 32 views
6

Sử dụng Xcodebuild trực tiếp từ bash, làm cách nào để phát hiện lỗi? mã thoát luôn là 0 bất kể. Tôi nhận ra có một kết quả đầu ra "FAILED" hoặc "SUCCEEDED", nhưng không có cách nào tao nhã hơn?OSX/Bash - phát hiện lỗi xây dựng

Ngoài ra, đôi khi tôi sử dụng "make" (đặc biệt là với các bản dựng dựa trên Qt của tôi). Có cách nào để phát hiện make đã thất bại từ kịch bản xây dựng?

+0

Các bạn đã nhìn http://stackoverflow.com/questions/7363459/how-to-get-the-return-value-of-xcodebuild/10808467#10808467? –

+1

vì vậy xcodebuild .... || exit 1 sẽ thoát khỏi kịch bản với mã thoát 1 khi thất bại? không phải là phụ thuộc vào xcodebuild thực sự đưa ra một mã thoát> 0 khi không? tôi nghĩ rằng nó không làm điều đó. – JasonGenX

Trả lời

1

Có thể nó phụ thuộc vào phiên bản Xcode hoặc có thể nó không thành công. Đây là những gì tôi nhận được khi tôi kiểm tra $? sau khi một số bao gồm các tệp không thể được tìm thấy:

[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 luôn trả về 0 ngay cả khi quá trình tạo không thành công. Để phát hiện lỗi, bạn có thể sử dụng một kịch bản như thế này:

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 

Tôi xác nhận rằng ** BUILD FAILED ** sẽ không được in khi chạy xcodebuild với các tùy chọn lưu trữ, vì vậy nó có vẻ như chuỗi tìm kiếm là 'Các lệnh xây dựng sau không thành công'.

+0

cảm ơn vì điều này. Tôi cũng đã thử đếm từ chỉ trên chuỗi "lỗi" và dường như là đủ. (trừ khi tất cả các lớp học của bạn hoặc một cái gì đó có từ "lỗi" trên đó) – kevinl