Gnu Makefile - Gerenciando dependências

Que abordagem os programadores de C ++ na plataforma Unix usam para criar e gerenciar Makefiles?

Eu estava usando Makefiles feitos à mão para meus projetos, mas eles não lidam com alterações de arquivo de cabeçalho e outras dependências. Eu pesquisei e encontrei uma boa soluçãoAqui.

Mas eu me deparei com um problema aqui no comando sed -

    sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$//' \
        -e '/^$/ d' -e 's/$/ :/' < $*.d >> $*.P; \

O problema é com a terceira expressão "-e 's / * \ $ //'. Não funciona. Ela supostamente remove as barras invertidas. Eu entendo que tem que haver um dólar duplo, já que isso é parte de um Makefile Alguém pode me dizer o que está errado aqui?

Aqui está o Makefile completo -

CC=g++
CFLAGS=-g -Wall
LIBS=-lpthread

OBJS=file1.o file2.o
TARGET=testProg

$(TARGET) : $(OBJS)
        $(CC) -o $@ $^ $(CFLAGS) $(LIBS)

%.o : %.cpp
        $(CC) -MMD -c -o $@ 
CC=g++
CFLAGS=-g -Wall
LIBS=-lpthread

OBJS=file1.o file2.o
TARGET=testProg

$(TARGET) : $(OBJS)
        $(CC) -o $@ $^ $(CFLAGS) $(LIBS)

%.o : %.cpp
        $(CC) -MMD -c -o $@ $< $(CFLAGS)
        @cp $*.d $*.P; \
            sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
                -e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $*.P; \
            rm -f $*.d

-include $(OBJS:%.o=%.P)

clean :
        rm -f $(TARGET) $(OBJS)

all : $(TARGET)
lt; $(CFLAGS) @cp $*.d $*.P; \ sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$//' \ -e '/^$/ d' -e 's/$/ :/' < $*.d >> $*.P; \ rm -f $*.d -include $(OBJS:%.o=%.P) clean : rm -f $(TARGET) $(OBJS) all : $(TARGET)

Além da solução para este problema, gostaria também de algumas dicas / sugestões para a minha primeira pergunta.

questionAnswers(12)

yourAnswerToTheQuestion