Uso de .PHONY en el archivo MAKE

Mientras buscaba el uso de .PHONY en makefile, me encontré este que dice algo como

.PHONY también te permite tener objetivos que no tienen una regla asociada

Puse el ejemplo mencionado en esa publicación en un archivo MAKE y lo ejecuté, pero no me muestra ningún error como se menciona en el OP. ¿Puede alguien por favor detallarlo?

El archivo MAKE

target1: dostuff

.PHONY: target2
target2: dostuff



dostuff:
        @echo "Stuff gets done!!!!"

O / P

[sourav@titan temp]$ make target1
Stuff gets done!!!!
[sourav@titan temp]$ make target2
Stuff gets done!!!!
[sourav@titan temp]$ make
Stuff gets done!!!!
[sourav@titan temp]$

Según el OP, make target1 debería arrojar un error. Por favor ilumine.

Algo de información

[sourav@titan temp]$ uname -r
2.6.18-194.el5PAE
[sourav@titan temp]$ make --version
GNU Make 3.81
[sourav@titan temp]$

preguntado el 03 de diciembre de 13 a las 13:12

Ese comentario esta mal. -

[archivo PDF entrante] gnu.org/software/make/manual/make.pdf . 4.5 -

@dbw Señor, soy nuevo en Linux. ¿Puede usted explicar por favor? -

Lo vinculó al manual de creación en el que puede leer sobre cómo funciona .PHONY. Y para aclarar el comentario de @MadScientist, el cartel del comentario está mal. make permite objetivos sin reglas muy bien independientemente de .PHONY. make no arrojará el error que el cartel de ese comentario indicó que lo haría como se muestra en su prueba. -

1 Respuestas

Verdadero. A .PHONY target solo puede tener dependencias, sin ninguna regla. En este caso, make no ejecutará ninguna regla, sino que comprobará si se cumplen las dependencias (y, en caso contrario, ejecutará sus reglas).

Por lo tanto, en su ejemplo, es correcto que ambos target1 y target2 llamar al dostuff porque es una dependencia.

Respondido el 03 de diciembre de 13 a las 13:12

¿Por qué debería tener un error? De acuerdo con la documentación, objetivos falsos (como target1) puede tener o no tener una regla. En tu caso, target1 no tiene regla. Solo tiene dependencias. Pero esto no es un error. - Claudio

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.