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.