我有一个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进行比较,但我无法找到错误。我哪里出错?
答案 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