2012-04-01 17 views
7

Tengo un sencillo Makefile:hacer [1]: directorio Entrando mensaje de error

default: 
    @make build 
    @make run 

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

run: 
    @java Test 

Durante la compilación, hacen salidas:

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

que necesito hacer para construir sin imprimir estos mensajes. ¿Alguien sabe cuál es el problema o cómo suprimir estos mensajes?

Gracias


editar: esto ocurre independientemente del código. p.ej. ocurre con:

class Test { 

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

¿Cuál es el código? No podemos adivinar ... – Neal

+0

¿Por qué compilar Java con make? (Supongo que "porque el instructor lo dijo"). – millimoose

+0

@Neal Lo siento, editado para incluir un fragmento de código. e Inerdial, usamos make porque la elección del idioma depende de nosotros. Los instructores solo necesitan una forma unificada de invocar todos nuestros diversos programas. – noobler

Respuesta

11

Cambio make-make -s:

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

Mejor aún:

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

Aún mejor:

default: run 

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

run: build 
    @java Test 
+0

+1 para la solución 'aún mejor'. –

+0

Incluso mejor. agregue etiquetas .PHONY a los objetivos de compilación y ejecución. –

10

make -s suprime otros mensajes del archivo MAKE también que pueden ser importantes para los desarrolladores. Si desea suprimir "entrada/salida de mensajes de directorio" sólo se ejecutan make con

make --no-print-directory

+0

> Esto solo funciona con GNU Make. [Trucos para silenciar Make] (http://www.gnu.org/software/automake/manual/html_node/Tricks-For-Silencing-Make.html). – Sharadh

Cuestiones relacionadas