makefile 是对项目的代码管理工具。
在编写大型项目的时候,如果编译的文件多,文件所属的目录复杂。直接采用GCC编译,会很繁琐。因此,采用Makefile对编译文件进行管理。
目的:了解makefile的文件写作格式
命名方式:makefile 或者 Makefile
规则:目标、依赖、命令
目标:依赖条件
(Tab)命令
1.创建一个main.c文件
#include<stdio.h> int main(){ printf("hello world "); return 0; }
2.创建对应的makefile文件
sailfish@DESKTOP-GSV91L5:~/c_file$ cat makefile
app:main.c
gcc main.c -o app
3.直接在makefile文件夹目录输入make
sailfish@DESKTOP-GSV91L5:~/c_file$ make gcc main.c -o app sailfish@DESKTOP-GSV91L5:~/c_file$ ls app main.c makefile sailfish@DESKTOP-GSV91L5:~/c_file$ ./app hello world
if makefile中有多个目标与依赖,可以分解为多个小依赖
终极目标都写在第一条规则。
Makefile向下检索,构建出一颗关系依赖树。
从下向上执行命令,生成最终的目标文件。
Makefile在每次生成时,会检查源文件时间,如果时间 目标文件:依赖条件,依赖条件晚于目标文件,则需要跟新目标文件。
可以提高多文件程序的编程效率。
Makefile 设置变量
obj = main.o add.o sub.o mul.o
取值:
app:$(obj)
gcc $(obj) -o app
Makefile 模式规则
$< &@ makefile中的自动变量
%.o:%c
gcc -c $< -o &@
// &< 规则中的第一个依赖
// &@ 规则中的目标
// $^ 规则中的所有依赖
main.o:main.c
gcc -c main.c -o main.o
Makefile中自己维护的变量:
CC == cc
CPPFLAGS = -I
CFLAGS = -WALL -g -c
LDFLAGS = -L -l