Несколько сборок с makefile

У меня были серьезные проблемы с Makefiles, я пытаюсь запустить эти команды в нем, и до сих пор большинство изменений, которые я сделал, привели к тому, что "ничего нельзя сделать для всех", независимо от того, меняю ли я строки, это просто не работает Например, PROG4 должен был работать ниже, но в нем ничего не сказано.

BIN_DIR = bin
LEX_DIR = lexyacc-code
LIB_DIR = lib
SRC_DIR = src
OBJ_DIR = obj

CC = gcc
BS = bison
FX = flex
CFLAGS = -I$(LIB_DIR)

SRCS = $(wildcard $(LEX_DIR)/calc3b.c)
SRCS2 = $(wildcard $(LEX_DIR)/calc3.y)
SRCS3 = $(wildcard $(LEX_DIR)/calc3.l)
SRCS4 = $(wildcard $(OBJ_DIR)/y.tab.c)
SRCS5 = $(wildcard $(OBJ_DIR)/lex.yy.c)

OBJS = $(patsubst $(LEX_DIR)/%.c,$(OBJ_DIR)/%.o,$(SRCS))


PROG = calc3b
PROG2 = y.tab
RM = rm -f

MVV="$(shell mv y.tab.c obj)"; echo $MVV


all: $(PROG2) $(PROG4) 


$(PROG): $(OBJS)
    $(CC) $^ -o $(PROG)

$(PROG2):
    $(BS) -y -d $(SRCS2)  

$(PROG4): $(CC) -c $(SRCS4) $(SRCS5) $(CFLAGS)


$(OBJ_DIR)/%.o: $(LEX_DIR)/%.c
    $(CC) $(CFLAGS) -c $< -o $@


clean:
    $(RM) $(PROG) $(OBJS)

Работает только PROG2, в основном для результата у меня есть заголовок и исходный файл, который я пытался переместить в определенные папки, но в конце концов я сделал это командой 'mv' (я знаю, что это против Makefile).

Команды таковы:

bison -y -d calc3.y
flex calc3.l
gcc -c y.tab.c lex.yy.c
gcc y.tab.o lex.yy.o calc3b.c -o calc3b.exe

Первая команда, у меня один заголовок и источник в результате.

Во-вторых, у меня есть один источник в результате.

В-третьих, у меня есть 2 объекта файла в результате.

И в-четвертых, у меня будет один исполняемый файл.

Поэтому мне также нужно переместить эти файлы в их определенные папки.

Кто-нибудь может мне помочь с этим? Благодарю.

1 ответ

Я думаю, что проблема с $(PROG4) в том, что вы забыли поместить команду в новую строку с табуляцией. В том, что вы показали выше, вся командная строка находится там, где должна быть зависимость, а не команда. Поэтому makefile не выполняет команду для $(PROG4).

Другие вопросы по тегам