c语言 - make: *** 没有规则来制定目标'-std=c99'



我已经阅读了很多制作指南,但我仍然无法使其发挥作用。我试图创建一个创建不同程序的makefile,每个程序都有自己的源文件(.c(,但它们都使用相同的头文件(.h(,所有文件都在同一目录中。

现在我有这个:

CC   = gcc
CFLAGS   = -std=c99 -g -c -Wall
LFLAGS   = -std=c99 -g -c -Wall
OBJS    = nivel1.o nivel2.o nivel3.o nivel4.o nivel5.o nivel6.o my_shell.o
OUT = nivel1,nivel2,nivel3,nivel4,nivel5,nivel6,my_shell
OBJS0   = nivel1.o
SOURCE0 = nivel1.c
HEADER0 = my_shell.h
OUT0    = nivel1
OBJS1   = nivel2.o
SOURCE1 = nivel2.c
HEADER1 = my_shell.h
OUT1    = nivel2
OBJS2   = nivel3.o
SOURCE2 = nivel3.c
HEADER2 = my_shell.h
OUT2    = nivel3
OBJS3   = nivel4.o
SOURCE3 = nivel4.c
HEADER3 = my_shell.h
OUT3    = nivel4
OBJS4   = nivel5.o
SOURCE4 = nivel5.c
HEADER4 = my_shell.h
OUT4    = nivel5
OBJS5   = nivel6.o
SOURCE5 = nivel6.c
HEADER5 = my_shell.h
OUT5    = nivel6
OBJS6   = my_shell.o
SOURCE6 = my_shell.c
HEADER6 = my_shell.h
OUT6    = my_shell
all: nivel1 nivel2 nivel3 nivel4 nivel5 nivel6 my_shell
nivel1: $(OBJS0) $(LFLAGS)
$(CC) -g $(OBJS0) -o $(OUT0)
nivel2: $(OBJS1) $(LFLAGS)
$(CC) -g $(OBJS1) -o $(OUT1)
nivel3: $(OBJS2) $(LFLAGS)
$(CC) -g $(OBJS2) -o $(OUT2)
nivel4: $(OBJS3) $(LFLAGS)
$(CC) -g $(OBJS3) -o $(OUT3)
nivel5: $(OBJS4) $(LFLAGS)
$(CC) -g $(OBJS4) -o $(OUT4)
nivel6: $(OBJS5) $(LFLAGS)
$(CC) -g $(OBJS5) -o $(OUT5)
my_shell: $(OBJS6) $(LFLAGS)
$(CC) -g $(OBJS6) -o $(OUT6)
nivel1.o: nivel1.c
$(CC) $(FLAGS) nivel1.c -std=c99
nivel2.o: nivel2.c
$(CC) $(FLAGS) nivel2.c -std=c99
nivel3.o: nivel3.c
$(CC) $(FLAGS) nivel3.c -std=c99
nivel4.o: nivel4.c
$(CC) $(FLAGS) nivel4.c -std=c99
nivel5.o: nivel5.c
$(CC) $(FLAGS) nivel5.c -std=c99
nivel6.o: nivel6.c
$(CC) $(FLAGS) nivel6.c -std=c99
my_shell.o: my_shell.c
$(CC) $(FLAGS) my_shell.c -std=c99
clean:
rm -f $(OBJS) $(OUT)

我试过改变很多事情,但没有什么能让它发挥作用,任何帮助都将不胜感激!PD:我需要它是std c99。

nivel1: $(OBJS0) $(LFLAGS)
$(CC) -g $(OBJS0) -o $(OUT0)

是错误的。这就是make抱怨的原因。您在$(LFLAGS)上指定了一个依赖项,但它不是文件或目标,只是编译时使用的标志定义。你可能想要:

nivel1: $(OBJS0)
$(CC) $(LFLAGS) -g $(OBJS0) -o $(OUT0)

---编辑---(由Kaylum建议(

LFLAGS的值错误。由于该命令是链接阶段,因此-std=c99-c-Wall都不可用。

最新更新