문제

내가 담당하는 앱 설치의 일부로 일부 C 코드 라이브러리를 컴파일합니다.이는 GNU Make를 사용하여 콘솔에서 수행됩니다.

따라서 설치의 일부로 콘솔 창이 열리고 컴파일 및 링크가 진행되는 동안 make 파일 출력이 표시됩니다. 완료되면 콘솔 창이 닫히고 설치 프로그램이 계속됩니다.

컴파일 오류가 없다면 괜찮습니다.그런 다음 무슨 일이 일어나고 있는지 파악하기 전에 파일 만들기에 버그가 발생하고 콘솔 창이 닫힙니다.

그래서 제가 원하는 것은 makefile에 오류가 있는 경우 '계속하려면 키를 누르세요' 유형 기능을 사용하여 콘솔 창을 일시 중지하여 콘솔이 계속 열려 있도록 하는 것입니다.그렇지 않으면 정상적으로 종료하고 콘솔을 닫습니다.

GNU Makefile이나 Make를 실행할 수 있는 배치 파일에서 이 작업을 수행하는 방법을 알아낼 수 없습니다.

도움이 되었습니까?

해결책

이것은 트릭을 수행해야합니다 :

if not ERRORLEVEL 0 pause

유형 help if 오류 수준 사용법에 대한 자세한 내용은 DOS에서 확인하세요.

다른 팁

당신이 찾고 있는 것은 다음과 같습니다:

if ERRORLEVEL 1 pause

당신이 입력하는 경우

HELP IF

다음 정보를 얻습니다.ErrorLevel 번호 | 마지막 프로그램 실행이 종료 코드를 반환 한 경우 실제 조건을 지정합니다. 같거나 크다 지정된 번호.

이 간단한 C 프로그램을 사용하여 종료 코드를 조작합니다.

#include <stdio.h>
main(int argc, char *argv[]) {
    if (argc == 2) {
        // return integer of argument 1
        return strtol(argv[1], NULL, 10);
    }
    else {
        return 0;
    }
}

종료 코드를 테스트할 수 있습니다. 배치 파일 이렇게:

test.exe 0
IF ERRORLEVEL 0 PAUSE

상태: 0 => 0 == TRUE

언제 ERRORLEVEL = 0, 논리가 다음과 같기 때문에 일시 중지가 발생합니다. >= 또는 크거나 같음.이는 조건이 다음과 같은 것이 아니라는 것이 즉시 명확하지 않기 때문에 중요합니다. == 비교.

다음을 대체합니다. 1 => 0 또한 true이므로 일시 중지도 발생합니다.이는 모든 양수에 해당됩니다.

아래로 이동해야만 반대 효과를 유발할 수 있습니다. 0:

test.exe -1
IF ERRORLEVEL 0 PAUSE

상태: -1 => 0 == FALSE

이후 ERRORLEVEL ~의 1 일반적으로 오류가 있음을 의미합니다. 0 오류가 없습니다. 비교 조건의 최소값을 늘려서 원하는 결과를 얻을 수 있습니다.

test.exe 0
IF ERRORLEVEL 1 PAUSE

상태: -1 => 1 == FALSE

상태: 0 => 1 == FALSE

상태: 1 => 1 == TRUE

이 예에서는.스크립트는 다음과 같은 경우에 일시중지됩니다. ERRORLEVEL ~이다 1 또는 더 높게

이것이 허용된다는 점에 유의하십시오. -1 종료 코드는 다음과 같습니다. 0.하나만 원하면 어떡하지? 0 멈추지 않으려고?별도의 구문을 사용할 수 있습니다.

test.exe 0
IF NOT %ERRORLEVEL% EQU 0 PAUSE

상태: -1 != 0 == TRUE

상태: 0 != 0 == FALSE

상태: 1 != 0 == TRUE

이 예에서는 다음과 같은 경우 스크립트가 일시 중지됩니다. %ERRORLEVEL% 아니다 0 먼저 EQU 연산자를 사용하여 다음을 확인하면 됩니다. %ERRORLEVEL% EQU 0, 그런 다음 NOT 연산자를 사용하면 다음과 같은 반대 효과를 얻을 수 있습니다. != 운영자.그러나 나는 이것이 일반 DOS가 아닌 NT 시스템에서만 작동한다고 믿습니다.

참고자료:

http://chrisoldwood.blogspot.ca/2013/11/if-errorlevel-1-vs-if-errorlevel-neq-0.html http://ss64.com/nt/errorlevel.html

'pause' 명령을 사용해 보셨나요?

@echo off
echo hello world
pause
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top