c - 低估一个非常小的 GNU makefile

标签 c makefile

我正在尝试编辑一个 makefile,我之前已经构建了自己的,但我很难理解这个非常小的示例,它显然使用了我不知道的约定。我已经查看了 GNU 文档,但不太确定要搜索什么。

makefile定义了SRCS OBJS LIBS CC CFLAGS

然后 makefile 会编译这些库,而无需具体说明如何进行。例如文件中的行是:

mgrid.o: array_alloc.h timer.h

但是makefile实际执行的是:

gcc -std=c89 -Wall -Wextra -pedantic   -c -o mgrid.o mgrid.c

谁能帮忙解释一下这是怎么回事?我在哪里可以找到有关如何定义这些标准的信息?

最佳答案

make 有一定的默认规则

$(CC) $(CFLAGS) -o $@ $^

是一般默认规则。

mgrid.o: array_alloc.h timer.h

只告诉 mgrid.o 也依赖于 array_alloc.h timer.h

关于c - 低估一个非常小的 GNU makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545431/

相关文章:

c - 使用数组读取和显示二进制文件

makefile - 在运行 "./configure"命令之前如何将源树重置为他们喜欢的样子?

c++ - Eclipse C++ 调试可执行文件找不到具有相对路径的文件

windows - 您知道任何对并行化有良好支持的构建系统吗?

c - 内部 realloc() 的未定义行为

c - 为什么我会出现段错误?

c - 在 ‘)’ token 之前预期为 ‘;’

c - 使用扩展 ASM,什么可以确保操作数的读/写在所需的时间发生?

c++ - 在 Makefile 中解决依赖关系的常用方法是什么?

c++ - 混合 C 和 C++ makefile