私は Makefile で深刻な問題を抱えていました。その中でこれらのコマンドを実行しようとしていますが、これまで行った変更のほとんどは、行を変更しても「'all' に対して何もする必要はありません」という結果になりました。働かないでください。たとえば、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
最初のコマンドで、結果としてヘッダーとソースが 1 つあります。
次に、結果としてソースが 1 つあります。
3番目に、結果として2つのオブジェクトファイルがあります。
4 つ目は、実行可能ファイルを 1 つ作成します。
したがって、これらのファイルを特定のフォルダーに移動する必要もあります。
誰でもこれで私を助けることができますか? ありがとう。