Я пытаюсь сохранить неявные правила в make, имея подстановку исходного пути, например $(SRC:%=$(SRCDIR)/%)
или , вставляя функцию конвейера , например $(addprefix $SRCDIR/,$SRC)
.
Как мне это сделать?
Исходные файлы (* cpp * c) находятся в src/
.
SRCDIR = src
HDRDIR = src/include
DDIR = src/d
.SUFFIXES = .o .cpp .c
.cpp.o:
g++ -c $(CCFLAGS) $<
.c.o:
gcc -c $(CFLAGS) $<
%.d: %.cpp
set -e; $(CC) -MM $(CPPFLAGS) $< \
| sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; [ -s $@ ] || rm -f $@
%.d: %.c
set -e; gcc -MM $(CPPFLAGS) $< \
| sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; [ -s $@ ] || rm -f $@
TESTHNF_CPP_SRCS = testhnf.cpp timings.cpp LongModular.cpp VeryLong.cpp VeryLongModular.cpp squfof.cpp
C_SRCS = mt19937int.c lip.c
include $(TESTHNF_CPP_SRCS:%.cpp=$(DDIR)/%.d)
include $(C__SRCS:%.c=$(DDIR)/%.d)
TESTHNF_OBJS = $(TESTHNF_CPP_SRCS:%.cpp=$(OBJDIR)/%.o) $(C_SRCS:%.c=$(OBJDIR)/%.o)
testhnf: $(TARGETDIR) $(TARGETDIR)/testhnf
$(TARGETDIR)/testhnf: $(TESTHNF_OBJS)
$(CC) $(CCFLAGS) -o $(TARGETDIR)/testhnf $(TESTHNF_OBJS) $(LIBS)
cleantesthnf:
rm -rf $(TARGETDIR)/testhnf $(TESTHNF_OBJS)