Sobrescribir el directorio de destino en la regla catch-all en GNU Makefile

Considere lo siguiente:

SRCS = somefile.c util/someother.c ../src/more.c

%.o : %.c
    $(GCC) -MD -c $< -o $@ -Wp,-MD,.deps/$*.d
    @cp .deps/$*.d .deps/$*.P; \
      sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
          -e '/^$$/ d' -e 's/$$/ :/' < .deps/$*.d >> .deps/$*.P; \
      rm -f .deps/$*.d

-include $(SRCS:%.c=.deps/%.P)

How would I change the above so that the .o files end up in ./? Currently they build in the directory the source file exists in and that's bad.

preguntado el 21 de mayo de 12 a las 19:05

1 Respuestas

Lo haría de esta manera:

SRCS = somefile.c someother.c more.c

%.o : %.c
    [same as before]

-include $(SRCS:%.c=.deps/%.P)

vpath %.c util ../src

contestado el 22 de mayo de 12 a las 16:05

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