Какой подход используют программисты C ++ на платформе Unix для создания и управления файлами Makefile?
Я использовал созданные вручную Make-файлы для своих проектов, но они не обрабатывают изменения файла заголовка и другие зависимости. Я погуглил и нашел хорошее решение здесь .
Но я столкнулся с проблемой здесь, в команде sed -
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < $*.d >> $*.P; \
Проблема в третьем выражении "-e 's / * \ $$ //'.
Не работает Предполагается, что для удаления обратной косой черты. Я понимаю, что там должен быть двойной доллар, так как это часть Makefile. Может кто-нибудь сказать мне, что здесь не так?
Вот полный Makefile -
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)
Помимо решения этой проблемы, я также хотел бы дать несколько советов / указателей на мой 1-й вопрос.