我正在用 C 编写程序,我想知道如何使用 Makefile 构建和运行我的程序。
我有三个文件:
main.c
count.c
bin2csv.c
我还有这些 header :
bin2csv.h
count.h
struct.h
这是我的生成文件:
CC = gcc
OBJS = main.o count.o bin2csv.o
HEADERS = struct.h count.h bin2csv.h
APP_NAME = project2
all: $(APP_NAME)
$(APP_NAME): $(OBJS) $(HEADERS)
$(CC) $(OBJS) -o $(APP_NAME)
main.o:
$(CC) -c main.c
count.o:
$(CC) -c count.c
bin2csv.o:
$(CC) -c bin2csv.c
clean:
rm -f *.o $(APP_NAME)
我的问题如下: 这个 make 文件中发生了什么?它遍历层次结构并将这些 .c 文件编译成目标文件,包括 header ?
我将如何运行和编译我的程序? 我试图通过添加 print 语句来更改 main.c,但我认为使用 gcc 进行编译会丢弃 makefile。我知道我可以使用命令 make 我不相信有任何改变。
最佳答案
你需要说明 .o
文件依赖于 .c
文件:
main.o: main.c <---- HERE
$(CC) -c main.c
count.o: count.c <---- HERE
$(CC) -c count.c
bin2csv.o: bin2csv.c <---- HERE
否则,make
没有理由认为它需要重新制作 .o
文件。
关于c - 生成文件结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34192933/