改进Makefile

时间:2013-11-09 19:41:45

标签: c makefile

我有一个make文件,我试图让它更灵活。因此,如果我正在构建可执行文件,则有primary.c和primary.h。除此之外,还需要在可执行文件中构建另外两对文件:helper_funcs.c / helper_funcs.h和fork.c / fork.h.

CC = gcc
CFLAGS = -c -g -Wall -Wextra
SOURCES = fork.c helper_funcs.c
DEPS = primary.h fork.h helper_funcs.h 
OBJECTS = $(SOURCES:.c=.o)
EXECUTABLE = primary

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
        $(CC) $(OBJECTS) -o $@

.c.o: $(DEPS)
        $(CC) $(CFLAGS) $< -o $@

clean:
        rm -f *.o
        rm -f $(EXECUTABLE)

我的目标是编写这个make文件,无论我有多少其他源文件,我所要做的就是将它们添加到SOURCES列表中,Makefile将处理编译和链接。

当我去编译时,我得到以下内容:

rm -f *.o
rm -f primary
gcc -c -o fork.o fork.c -c -g -Wall -Wextra
gcc -c -o helper_funcs.o helper_funcs.c -c -g -Wall -Wextra
gcc -c -o primary.o primary.c -c -g -Wall -Wextra
primary.c: In function ‘build_state’:
primary.c:114: warning: implicit declaration of function ‘make_passive’
primary.c:120: warning: implicit declaration of function ‘make_active’
primary.c:127: warning: implicit declaration of function ‘string_builder’
primary.c: In function ‘main’:
primary.c:172: warning: implicit declaration of function ‘read_file’
gcc fork.o helper_funcs.o routed_LS.o -o routed_LS

它看不到的函数是helper_funcs.c文件中包含的函数。它似乎正在拾取fork.c中的函数,但我无法理解它的不同之处。 任何人都可以帮我弄清楚如何清除这些错误?谢谢!

0 个答案:

没有答案