Я написал Makefile, но мне нужно, чтобы создать папку OBJ, поэтому, для этого, я попробовал много вещей ... на основе этой ссылке: https://stackoverflow.com/questions/askСоздать каталог с помощью Makefile
Итак, что мой Makefile
IDIR =.
CC=gcc
CFLAGS=-I$(IDIR) -Wall -g
SRCDIR=src
ODIR=obj
LIBS=-ltest
_OBJ = main.o
OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ))
OUTPUTDIR = ../bin
$(ODIR)/%.o: $(SRCDIR)/%.c
$(CC) -c -o [email protected] $< $(CFLAGS)
$(OUTPUTDIR)/test: $(OBJ)
$(CC) -o [email protected] $^ $(CFLAGS) $(LIBS)
Мне нужно создать папку OBJ, я попробовал эту идею:
OBJDIR := objdir
OBJS := $(addprefix $(OBJDIR)/,foo.o bar.o baz.o)
$(OBJDIR)/%.o : %.c
$(COMPILE.c) $(OUTPUT_OPTION) $<
all: $(OBJS)
$(OBJS): | $(OBJDIR)
$(OBJDIR):
mkdir -p $(OBJDIR)
и это:
MKDIR_P = mkdir -p
.PHONY: directories
all: directories program
directories: ${OUT_DIR}
${OUT_DIR}:
${MKDIR_P} ${OUT_DIR}
Но, видимо, каждый раз, когда я назвал Makefile, он проигнорировал команду для создания каталога OBJ и начал собирать непосредственно ...
Как я могу сделать, чтобы Makefile создать каталог?
Возможный дубликат [Как создать каталог при необходимости?] (Http://stackoverflow.com/questions/16344719/how-to-create-directory-if-needed) – Beta
Непонятно, почему [ Задайте вопрос] (http://stackoverflow.com/questions/ask) - полезная ссылка. –
Последний фрагмент будет работать, если вы определите 'OUT_DIR = $ {ODIR}' или другое подходящее значение. Символ трубы в среднем фрагменте озадачен; Я не думаю, что раньше видел эти записи. –