2011-03-24 6 views
18

Xcode 4를 사용 중입니다. 스키마 (bash 스크립트)를 실행했지만 Xcode가 종료 코드가 0이 아니더라도 스크립트의 종료 상태를 무시하고 항상 실행되는 것처럼 보입니다.Xcode가 사전 조치가 실패했는지 여부를 감지하지 못하는 것은 정상입니까?

정상입니까? 맞춤 단계를 추가하기 위해 어떤 대안을 사용할 수 있습니까? 하나는 실패 할 수 있습니다.

업데이트 : 또한 게시를 위해 후 조치를 시도했지만 동일한 결과가 표시되면 항상 피드백없이 실행됩니다.

빌드를 실패로 표시 할 수있는 사용자 지정 단계를 만들려면 어떻게해야합니까?

답변

20

사전/사후 조치 스크립트 종료 상태에주의를 기울이지 않는 것뿐만 아니라 출력을 빌드/실행 로그에 배치하는 것처럼 보이지 않습니다. 애플의 Xcode 4 dev 포럼에이 기사가 담긴 두 개의 개별 스레드가 있다고 생각한다. 이것이 버그인지 기능인지에 대한 어떠한 말도하지 않습니다.

+7

큰일이 아플 수 있습니다. – sorin

+0

- 전혀 용납 할 수없는 쓰레기 – 010110110101

+0

지켜봐주십시오. :-) –

3

실행 스크립트 단계에서 kill $PPID과 같은 것을 추가하여 xcodebuild를 종료 할 수 있습니다 (종료 코드 70 포함).

+1

또한 이것을 bash "트랩"과 한 줄짜리로 결합 할 수 있습니다 (http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_02.html 참조) : 트랩 "kill $ PPID"ERR –

+2

xcodebuild에 대한 좋은 해결책이 될 수도 있지만, Xcode로 컴파일하면 즉시 Xcode가 죽을 것입니다. – ishahak

0

Xcode를 사용할 때 kill $PPID은 해결책이 아닙니다. Farcaller에 댓글을 달았습니다.

내 솔루션은 프리 액션 스크립트 헤더 파일 (예를 들어, SchemePreActions.h)를 생성하고 정상적인 상황 비어 확인하고 코드 (예를 들어, 에 AppDelegate.m)로 포함하는 것입니다. 당신이 사전 행동 스크립트가 오류를보고 할 경우

이 방법이 실제의 예에서와 같이, 거기 #error 라인을 넣어 :

if [ $CONFIGURATION == Debug ]; then 
    echo "#error AppStore builds must not be in debug configuration" >> SchemePreActions.h 
fi 

엑스 코드는 매우 친절이 오류를보고합니다.

생성 된 파일을 git에서 무시하도록 권장합니다. 내 코드를보고 테스트 할 수 있습니다 SchemePreActions.h을 포함하여,

echo "//auto-generated. no need to commit"  > SchemePreActions.h 
echo "#define SCHEME_${SCHEME_NAME}"   >> SchemePreActions.h 
echo "#define SCHEME_NAME @\"${SCHEME_NAME}\"" >> SchemePreActions.h 
if [[ ${SCHEME_NAME} =~ "_PROD" ]]; then 
    echo "#define PRODUCTION"     >> SchemePreActions.h 
fi 

이 방법 : 내가 추가하는 팁으로


내 사전에 액션 스크립트는 항상이 선으로 시작되는 특정 구성표에서 실행중인 경우

관련 문제