本文重在记录makefile的使用方法,不介绍相关原理。
注意:所有的makefile指令前面都需要两个 Tab 缩进
1.初步使用
创建工作目录,工作目录下创建如下两个文件:
main.c
#include <stdio.h>
int main()
{
printf("打印\n");
}
makefile 或 Makefile
app : main.o
cc -o app main.o
main.o : main.c
cc -c main.c
clean :
rm app main.o
说明:
app : mian.o
一种依赖关系的声明,生成程序app需要依赖 main.o 文件。
cc -o app main.o
一个终端命令, 执行该命令,gcc使用main.o文件生成app
main.o : main.c
同理,依赖关系声明,生成main.o需要main.c文件
cc -c main.c
使用gcc编译main.c文件,生成二进制文件main.o
clean :
清除命令,不依赖任何文件
rm app main.o
清除编译链接生成的所有文件,类似于xcode的command+shift+k
执行流程
$ make
在工作目录下执行make命令,make命令会按照makefile文件中的规则执行,首先是app:main.o,依赖关系声明生成app需要main.o文件,make命令检查main.o是否存在(是否最新)
- 如果存在(或最新),则执行表达式 cc -o app mian.c命令,生成app;
- 如果不存在(或不是最新),则去生成main.o
main.o生成,检查依赖,main.c是否存在(或最新)
- 如果存在(或最新),则执行表达式 cc -c mian.c命令,生成mian.o;
- 如果不存在,则报错
以上所有的命令都可以单独执行,如:
$ make main.o
$ make clean