подстановки (или конвейерная функция) в неявных правилах с make (чтобы разделить исходные тексты и двоичные файлы) - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь сохранить неявные правила в 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)
...