我一直在使用Makefiles遇到严重问题,我试图在其中运行这些命令,到目前为止,我所做的大部分修改都导致了#34;没有什么可以为#39做的;所有'"无论我改变线条,它都不起作用。例如,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正在工作,基本上是因为我有头文件和源文件,我试图移动特定的文件夹,但最终我用&#39; mv&#39;命令(我知道它反对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个对象文件。
第四,我将有一个可执行文件。
因此,我还需要将这些文件移动到其特定文件夹中。
任何人都可以帮我解决这个问题吗?感谢。
答案 0 :(得分:1)
我认为$(PROG4)的问题是您忘记将命令放在带有制表符的新行上。在上面的内容中,整个命令行放在应该是依赖而不是命令的位置。因此,makefile不执行$(PROG4)的命令。