2011-07-28 16 views
9

Tengo un Makefile con la siguiente estructura (ejemplo de trabajo).¿Cuál es la diferencia entre "hacer" y "hacer todo"?

.PHONY: image flashcard put-files 

put-files: 
    @echo "=== put-files" 

image: 
    @echo "=== image" 

flashcard: 
    @echo "=== flashcard" 

all: put-files image flashcard 
    @echo "Done" 

espero que un simple make construirían los tres objetivos, pero esto no es así:

% make 
=== put-files 

Pero si puedo especificar explícitamente el objetivo, las dependencias se construyen así:

% make all 
=== put-files 
=== image 
=== flashcard 
Done 

¿Qué estoy haciendo mal?

Respuesta

11

Un simple make construirá el primer objetivo en la lista, que es put-files.

make all construirá el objetivo all. Si desea que all sea el valor predeterminado, muévalo al principio de la lista.

entender lo que el .PHONY es así, consulte http://www.gnu.org/s/hello/manual/make/Phony-Targets.html

+0

Tienes razón, mi problema era que de alguna manera me di cuenta de que el destino predeterminado se elige por su nombre ("todos"), en lugar de por la posición. ¡Muchas gracias! –

Cuestiones relacionadas