c - 生成文件结构

标签 c makefile

我正在用 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/

相关文章:

c++ - 如何在windows下制作superlu

makefile - 交叉编译内核模块

c - 尝试编译 spdif-loop 时出现 "undefined reference"错误消息

linux - 生成文件 : missing separator

c - 如果输入长度不同,如何计算函数 strcmp() 中的比较?

c - 如何同时输出到控制台和文本文件以使它们相同

c - 非线程安全库和线程

c - 关于二维数组地址。这句话是什么意思?

C 运算符和评估

java - 在一个 docker-component 文件中依次调用多个服务