Makefile не создает каталог - PullRequest
0 голосов
/ 20 июня 2020

Учитель дал нам этот make-файл для компиляции двух C файлов и сохранения объектов в каталоге под названием object. Он отлично компилирует программы, но не сохраняет их объекты в каталоге, а также даже не создает каталог. Не знаю, что делать, и мне действительно нужна помощь.

Это мой файл make

CC = clang
CFLAGS = -g -Wall

OBJDIR = object
HDRS = $(wildcard *.h)
SRCS = $(wildcard *.c)
OBJS = $(addprefix $(OBJDIR)/, $(SRCS:.c=.o))

.PHONY: all
all: client server 

# WARNING: must have a tab before each definition

$(OBJDIR)/client.o: client.c $(HDRS) $(OBJDIR)
    $(CC) $(CFLAGS) -c client.c -o object/client.o

$(OBJDIR)/server .o: server.c $(HDRS) $(OBJDIR)
    $(CC) $(CFLAGS) -c server.c -o object/server.o  

$(OBJDIR)/%.o: %.c $(HDRS) $(OBJDIR)
    $(CC) $(CFLAGS) -c $*.c -o object/$*.o

$(OBJDIR):
    mkdir $(OBJDIR)

.PHONY: clean
clean:
    rm -f $(TARGET) $(OBJS)

1 Ответ

0 голосов
/ 27 июня 2020

Все, что мне нужно было сделать, это добавить несколько целей в make-файл и изменить все, чтобы нацелить на цели

CC = clang
CFLAGS = -g -Wall 

# TODO: rename the target to something meaningful!
TARGET = client server

OBJDIR = object
HDRS = $(wildcard *.h)
SRCS = $(wildcard *.c)
OBJS = $(addprefix $(OBJDIR)/, $(SRCS:.c=.o))

.PHONY: all
all: $(TARGET)

# WARNING: *must* have a tab before each definition
$(TARGET): $(OBJDIR) $(OBJS)
    $(CC) $(CFLAGS) $(OBJDIR)/protocol.o $(OBJDIR)/$@.o  -o $@

$(OBJDIR)/%.o: %.c $(HDRS) $(OBJDIR)
    $(CC) $(CFLAGS) -c $*.c -o object/$*.o

$(OBJDIR):
    mkdir $(OBJDIR)

.PHONY: clean
clean:
    rm -f $(TARGET) $(OBJS)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...