the make howto create makefile dependencies debian gnu-make

howto - makefile structure



Omitir la generaciĆ³n de dependencia de archivos para ciertos objetivos(por ejemplo, `limpiar`) (1)

Tengo varios proyectos C y C ++ que siguen una estructura básica que he estado usando desde hace un tiempo. Mis archivos fuente van en src/*.c , archivos intermedios en obj/*.[do] y el ejecutable real en el directorio de nivel superior.

Mis makefiles siguen aproximadamente esta plantilla:

# The final executable TARGET := something # Source files (without src/) INPUTS := foo.c bar.c baz.c # OBJECTS will contain: obj/foo.o obj/bar.o obj/baz.o OBJECTS := $(INPUTS:%.cpp=obj/%.o) # DEPFILES will contain: obj/foo.d obj/bar.d obj/baz.d DEPFILES := $(OBJECTS:%.o=%.d) all: $(TARGET) obj/%.o: src/%.cpp $(CC) $(CFLAGS) -c -o $@ $< obj/%.d: src/%.cpp $(CC) $(CFLAGS) -M -MF $@ -MT $(@:%.d=%.o) $< $(TARGET): $(OBJECTS) $(LD) $(LDFLAGS) -o $@ $(OBJECTS) .PHONY: clean clean: -rm -f $(OBJECTS) $(DEPFILES) $(RPOFILES) $(TARGET) -include $(DEPFILES)

Ahora estoy en el punto en que estoy empaquetando esto para un sistema Debian. Estoy utilizando debuild para construir el paquete fuente de Debian, y pbuilder para construir el paquete binario. El paso de debuild solo tiene que ejecutar el objetivo clean , pero incluso esto hace que los archivos de dependencia se generen e incluyan.

En resumen, mi pregunta es realmente: ¿puedo de alguna manera evitar que genere dependencias cuando todo lo que quiero es ejecutar el objetivo clean ?


La solución es fácil, no -include archivos generados en limpio:

ifneq ($(MAKECMDGOALS),clean) -include $(DEPFILES) endif