Makefile中的Cflags没有出现

时间:2018-04-21 18:37:55

标签: c makefile

我有一个makefile,但似乎cflags只适用于我程序中的某些文件,我不知道为什么。

以下是使用make时发生的事情:

$ make
gcc -Wall -ansi -pedantic -g -c main.c
gcc  -c fw.c
gcc  -c trie.c
gcc -Wall -ansi -pedantic -g -c linked.c
gcc -Wall -ansi -pedantic -g -o fw main.o fw.o trie.o linked.o

您可以看到,在尝试创建fw.c和trie.c时,它不包含标志,但它确实包含其他文件的标志。

这是我的makefile:

 CC = gcc
 CFLAGS = -Wall -ansi -pedantic -g
 MAIN = main
 OBJS = main.o fw.o trie.o linked.o
 all : $(MAIN)

 $(MAIN) : $(OBJS) fw.h trie.h linked.h
     $(CC) $(CFLAGS) -o fw $(OBJS)

 main.o : main.c fw.h trie.h linked.h
     $(CC) $(CFLAGS) -c main.c

 fw.o : fw.c fw.h trie.h
     $(CC) $(CGLAGS) -c fw.c

 trie.o : trie.c fw.h trie.h linked.h
     $(CC) $(CGLAGS) -c trie.c

 linked.o : linked.c trie.h linked.h
     $(CC) $(CFLAGS) -c linked.c

 rm :
     rm *.o $(MAIN) core

我还有一个额外的问题,即每当我使用make与上一个make中未更改的文件时,它仍会执行此行:

$ make
gcc -Wall -ansi -pedantic -g -o fw main.o fw.o trie.o linked.o

通常情况下,它给我的信息"没有什么可以为所有人做的"。我试图将这个makefile与我的其他工作makefile进行比较,但我无法找到错误。我哪里出错?

1 个答案:

答案 0 :(得分:2)

您的Makefile

中存在拼写错误
 fw.o : fw.c fw.h trie.h
     $(CC) $(CGLAGS) -c fw.c

 trie.o : trie.c fw.h trie.h linked.h
     $(CC) $(CGLAGS) -c trie.c

请注意G。相反,使用这个:

 fw.o : fw.c fw.h trie.h
     $(CC) $(CFLAGS) -c fw.c

 trie.o : trie.c fw.h trie.h linked.h
     $(CC) $(CFLAGS) -c trie.c