2010-11-15 15 views
13

Estoy ejecutando Ubuntu 10.04. Cada vez que ejecuto make clean, obtengo esto:resultados "make clean" en "No hay regla para hacer que el objetivo 'clean'"

make: *** No hay regla para hacer el objetivo `clean '. Detener.

Aquí es mi makefile:

CC = gcc 
CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall 
PROGRAMS = digitreversal 
all : $(PROGRAMS) 
digitreversal : digitreversal.o 
     $(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS) 
.PHONY: clean 
clean: 
     @rm -f $(PROGRAMS) *.o core 

Cualquier idea por qué no su trabajo?

EDIT: Parece que hacer:

make -f Makefile.txt clean 

obras. Ahora: ¿hay algún ajuste para cambiar, así que no tengo que hacer el -f Makefile.txt todo el tiempo?

+3

Asegúrate de estar utilizando el 'makefile' correcto. Puede suceder que lo anterior se llame 'Makefile' y también tenga' makefile' que no tenga el objetivo 'clean' y cuando invoque' make clean', make by default usa 'makefile' y no' Makefile'. – codaddict

+4

simplemente cambie el nombre de 'Makefile.txt' a' Makefile' sin una extensión en el nombre. –

+0

Tuve el mismo problema en mi mac. Por algún motivo, 'makeFile' no fue encontrado por el comando make. cambiar el nombre a 'makefile' resolvió el problema. ¡es absurdo sin embargo! – Foad

Respuesta

16

Parece que el nombre de su archivo no es 'Makefile' o 'makefile'. En caso de que sea diferente, diga 'abc' intente ejecutar 'make -f abc clean'

1

Ha sido víctima de los errores más comunes en Makefiles. Siempre debe poner una pestaña al comienzo de cada comando. Has puesto espacios antes de las líneas $(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS) y @rm -f $(PROGRAMS) *.o core. Si los reemplazas con una pestaña, estarás bien.

Sin embargo, este error no genera el error "No rule to target ...". Eso probablemente significa que su problema está más allá de su Makefile. ¿Has comprobado que este es el Makefile correcto, como en el que quieres especificar tus comandos? Intente pasarlo explícitamente como un parámetro para hacer, y háganos saber lo que sucede.

+6

Si faltan pestañas, no obtendrá el error 'Sin regla para hacer objetivo'; en su lugar, obtendrá el error' Falta separador'. – codaddict

+0

Tienes razón, y como he aclarado, eso no sería un problema con el Makefile, per se. –

0

Esto funciona para mí. ¿Estás seguro de estar sangrando con pestañas?

CC = gcc 
CFLAGS = -g -pedantic -O0 -std=gnu99 -m32 -Wall 
PROGRAMS = digitreversal 
all : $(PROGRAMS) 
digitreversal : digitreversal.o 
    [tab]$(CC) $(CFLAGS) -o [email protected] $^ $(LDFLAGS) 

.PHONY: clean 
clean: 
    [tab]@rm -f $(PROGRAMS) *.o core 
1

Compruebe que el archivo se llame GNUMakefile, makefile o Makefile.

Si se llama nada más (y que no quieren cambiar su nombre) y luego tratar:

make -f othermakefilename limpia

7

supongo que se ha dado cuenta a estas alturas. La respuesta está oculta en su primer correo.

El comando make por defecto se buscan makefile, Makefile y GNUMakefile que el de entrada y está teniendo Makefile.txt en su carpeta. Simplemente elimine la extensión de archivo (.txt) y debería funcionar.

Cuestiones relacionadas