创建带有依赖项的 makefile

标签 c makefile

我正在尝试理解 makefile。我有以下文件:

main.c
(includes progA.c progB.c progC.c)

progA.c
(includes progA.h)

progB.c
(includes progA.c)

progC.c

我尝试创建一个 makefile,但不确定它是否正确:

main.o: main.c progA.o progB.o progC.o
    gcc -c main.c

progA.o: progA.c progB.o
    gcc -c progA.c

progB.o: progB.c progB.h
    gcc -c progB.c

progC.o: progC.c 
    gcc -c progC.c

有人可以帮我理解吗?我尝试查看教程,但给出了不同的信息。

另外,我如何实际运行它来测试?

最佳答案

对于您的问题,以下 makefile 应该可以解决问题。您只需输入 make 即可运行 makefile。或make -f <name_of_makefile>如果您的 makefile 有自定义名称(例如 build_main )

all: main

main: main.o progA.o progB.o progC.o
    gcc -o main main.o progA.o progB.o progC.o

main.o: main.c     
    gcc -c main.c   

progA.o: progA.c
    gcc -c progA.c

progB.o: progB.c
    gcc -c progB.c

progC.o: procC.c
    gcc -c progC.c

要构建可执行文件,对象 main.o progA.o progB.o progC.o是必需的,如 main: 之后的行中指定的那样.

编译规则main.o progA.o progB.oprogC.o由以下四个部分给出。

makefile的一般格式是

target: dependencies
[tab] system command

关于创建带有依赖项的 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19606652/

相关文章:

c - 开发一个函数,返回数组中存在的不同值的数量

recursion - 将递归 makefile 变量导出到子 make

python-3.x - python3 中 f2py 的 Makefile

c - 什么是头文件和库文件?

linux - makefile 中的 $< 和 $^ 有什么区别?

c - 在 c 中使用锯齿状数组

c - 在 Windows 上使用“空格”访问文件路径中的数据

c - "buffer[gotten] = '\0';"在此代码中的作用是什么?

haskell - Haskell 任务的 Makefile 示例

c - scanf函数测试