在构建大型项目时,我们需要对每个 .c 文件进行编译链接,vs 中直接就帮我们生成一个可执行文件,有的文件比较大,可能加载一次就要个把小时,而且我们无法单独一部分生成可执行文件,或者生成多个不同的可执行文件,这时候我们就要用到 Makefile 来创建文件之间的依赖关系,通过依赖关系进行编译链接。建议单独先编译 .o 项目,效率更高。
创建 Makefile / makefile 文件,上面是依赖关系,下面是依赖方法,依赖方法前记得一定是 Tab。
.PHONY:clean 是什么意思?
.PHONY 是伪目标:使目标总是被执行。如果给生成可执行程序加 .PHONY ,那就每 make 一次生成一次,不加,就会提醒你已经是最新的了,代表编译器会与不会检查。
其中 $@ 是指依赖关系中的目标文件,也就是 myproc; $^ 指依赖关系中的依赖文件列表,main.o proc.o; $< 指依赖关系中的一个一个依赖文件,一个个展开编译。