Domanda

Parte dell'installazione di un'app non sono responsabile, compila C, librerie di codice.Questo viene fatto in una console usando GNU Make.

Così, come parte dell'installazione, una finestra di console non si apre, è vedere il file di output wiz da come si compila e collega, al termine, la finestra di console, e chiude il programma di installazione continua.

Tutto bene, se non c'è un errore di compilazione.Poi il make file di bug e la finestra di console si chiude prima di avere la possibilità di capire cosa sta succedendo.

Così, quello che mi piacerebbe capitare è avere la finestra di console di pausa con un 'premere un tasto per continuare" tipo di funzionalità, se c'è un errore dal makefile in modo che la console rimane aperto.In caso contrario, solo uscita, come normale, e chiudere la console.

Non riesco a capire come fare questo in un Makefile di GNU o da un file batch che può eseguire il Fare.

È stato utile?

Soluzione

questo dovrebbe fare il trucco:

if not ERRORLEVEL 0 pause

tipo help if in DOS per maggiori informazioni su errorlevel di utilizzo.

Altri suggerimenti

Questo è quello che stai cercando:

if ERRORLEVEL 1 pause

Se si digita

HELP IF

prendi questa info:Numero ERRORLEVEL | Specifica una condizione vera se l'ultimo programma eseguito ha restituito un codice di uscita uguale o superiore a il numero specificato.

Utilizzando questo semplice programma in C per manipolare il codice di uscita:

#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;
    }
}

Siamo in grado di testare il codice di uscita in un file batch in questo modo:

test.exe 0
IF ERRORLEVEL 0 PAUSE

Condizione: 0 => 0 == TRUE

Quando ERRORLEVEL = 0, la pausa si verifica perché la logica è >= o maggiore o uguale.Questo è importante, in quanto non è immediatamente chiaro che la condizione non è un == confronto.

Si noti che subsituting per 1 => 0 sarà anche vero, e quindi la pausa verificarsi pure.Questo è vero per qualsiasi numero positivo.

Siamo in grado di innescare l'effetto opposto solo andando sotto 0:

test.exe -1
IF ERRORLEVEL 0 PAUSE

Condizione: -1 => 0 == FALSE

Dal momento che un ERRORLEVEL di 1 in genere significa che c'è un errore, e 0 nessun errore, si può solo aumentare il minimo in condizione di confronto per ottenere ciò che vogliamo in questo modo:

test.exe 0
IF ERRORLEVEL 1 PAUSE

Condizione: -1 => 1 == FALSE

Condizione: 0 => 1 == FALSE

Condizione: 1 => 1 == TRUE

In questo esempio.lo script per mettere in pausa quando ERRORLEVEL è 1 o superiore

Si noti che questo permette -1 codici di uscita lo stesso 0.Che cosa succede se uno vuole solo 0 per non mettere in pausa?Siamo in grado di utilizzare una diversa sintassi:

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

Condizione: -1 != 0 == TRUE

Condizione: 0 != 0 == FALSE

Condizione: 1 != 0 == TRUE

In questo esempio, lo script si interrompe se %ERRORLEVEL% non è 0 Siamo in grado di eseguire questa operazione utilizzando il EQU operatore di verificare prima se %ERRORLEVEL% EQU 0, quindi l'operatore per ottenere l'effetto opposto, equivalente al != operatore.Tuttavia, credo che questo funziona solo su macchine NT, non DOS puro.

Riferimenti:

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

Hai provato la 'pausa' di comando?

@echo off
echo hello world
pause
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top