Makefile 学习
介绍
- Makefile.
- Make
Make 指令需要一个 Makefile
通过 Makefile 来完成并自动维护编译工作
Makefile
文件描述了整个工程的编译、链接等规则。
Makefile 为了让编译更方便。
makefile 格式
1 | target ... : prerequisites ... |
target : 目标(相当于一个标示)
prerequisites: target 需要的目标文件(目标)。
command:make指令后 需要执行的指令。
对于没有 目标文件的target (a)我们需要定义这个target (a). .PHONY:a
表明b是一个为目标
例:
1 | main.o:main.c |
运行 make 指令执行了 command指令。
规则举例
1 | foo.o: foo.c defs.h # foo模块 |
看到这个例子,各位应该不是很陌生了,前面也已说过, foo.o
是我们的目标, foo.c
和 defs.h
是目标所依赖的源文件,而只有一个命令 cc -c -g foo.c
(以Tab键开头)。这个规则告诉我们两件事:
- 文件的依赖关系,
foo.o
依赖于foo.c
和defs.h
的文件,如果foo.c
和defs.h
的文件日期要比foo.o
文件日期要新,或是foo.o
不存在,那么依赖关系发生。 - 生成或更新
foo.o
文件,就是那个cc命令。它说明了如何生成foo.o
这个文件。(当然,foo.c文件include了defs.h文件)