2012-04-01 14 views
7

Ho un semplice Makefile:fare [1]: directory Entrando messaggio di errore

default: 
    @make build 
    @make run 

build: 
    @javac Test.java > /dev/null 

run: 
    @java Test 

Durante la compilazione, fare uscite:

make[1]: Entering directory `<current directory'> 
... 
make[1]: Leaving directory `<current directory'> 

devo fare per costruire senza stampare questi messaggi. Qualcuno sa quale sia il problema o come sopprimere questi messaggi?

Grazie


edit: questo accade indipendentemente dal codice. per esempio. accade con:

class Test { 

    public static void main(String[] args) { 
     System.out.println("HELLO WORLD"); 
    } 
} 
+1

Qual è il tuo codice? Non possiamo indovinare .... – Neal

+0

Qualche ragione per cui compilare Java con make? (Sto indovinando "perché l'istruttore ha detto così" però.) – millimoose

+0

@Neal dispiace, modificato per includere lo snippet di codice. e Inerdial, usiamo make perché la scelta del linguaggio dipende da noi. Gli istruttori hanno solo bisogno di un modo unificato di invocare tutti i nostri diversi programmi. – noobler

risposta

11

Change make-make -s:

default: 
    @make -s build 
    @make -s run 

Meglio ancora:

default: 
    @$(MAKE) -s build 
    @$(MAKE) -s run 

Ancora meglio:

default: run 

build: 
    @javac Test.java > /dev/null 

run: build 
    @java Test 
+0

+1 per la soluzione 'ancora migliore'. –

+0

Ancora meglio. aggiungi tag .PHONY alla build ed esegui obiettivi. –

10

make -s sopprime anche altri messaggi makefile che potrebbero essere importanti per gli sviluppatori. Se si vuole sopprimere "ingresso/uscita dei messaggi di directory" eseguito solo make con

make --no-print-directory

+0

> Funziona solo con GNU Make. [Tricks for Silencing Make] (http://www.gnu.org/software/automake/manual/html_node/Tricks-For-Silencing-Make.html). – Sharadh

Problemi correlati