1、写的第一段makefile编译程序
obj = a.o b.o c.otest: $(obj)gcc -o test $(obj)a.o : a.c
b.o : b.c
c.o : c.c.PHONY : clean
clean :rm test $(obj)
- target ... : prerequisites ...
command
target 也就是一个目标文件,可以是 Object File,也可以是执行文件。还可以是一个 标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述。 prerequisites 就是,要生成那个 target 所需要的文件或是目标。 command 也就是 生成target make 需要执行的命令。(任意的 Shell 命令) 这是一个文件的依赖关系,也就是说,target 这一个或多个的目标文件依赖于 prerequisites 中的文件,其生成规则定义在 command 中。说白一点就是说,prerequisites 中如果有一个以上的文件比 target 文件要新的话,command 所定义的命令就会被执行。这 就是 Makefile 的规则。也就是 Makefile 中核心的内容。
- make命令执行完成之后,会去寻找当前目录下的make或者makefile文件,然后执行这个makefile文件中的第一个target,根据这个target的依赖关系,去寻找执行相应的依赖文件。
比如:
Clean:
Rm * -r
像这种命令是不会去执行到的,因为跟第一个target没有什么间接或者直接的依赖关系,所以这个clean不会去执行,除非使用make clean命令去执行。
Clean命令后面的依赖为空,表示没有什么依赖的,直接会去执行下面的rm * -r。
- 在linux下.c编译之后变成了.o,很多.o打包之后变成了.a,.o链接之后可执行文件或者动态静态库。
- Windows下相应的是.obj,打包之后变成lib文件,最后再去链接。
- 注意:makefile的命令执行行必须以tab键开始。
- Makefile可用include把其他makefile引用进来,
举例:
Include a.mk
此处把makefile学习的文档附上。