LINUX Makefile
makefile概述
makefile是指定工程编译规则的程序。就像一个shell脚本一样,也可以执行操作系统的命令。
自动化编译:写好makefile程序后,只需一个make命令,完全自动编译。make是一个解释makefile中指令的命令工具。
makefile语法:由若干条规则组成,每条规则的语法结构:
target ... : prerequisites ...
<tab> command ... ...
每条规则由依赖关系和命令两部分组成。
Target是目标文件,还可以是一个标签(Label),prerequisites(前提,先决条件))就是要生成那个target所需要的文件或是目标。command也就是make需要执行的命令。(任意的Shell命令)
make命令语法:make [选项][目标] ]
功能:创建指定目标,如果没指定目标,创建第一个目标。Make默认的规则定义文件是GNUmakefile、makefile或Makefile,否则使用-f指定文件。
常用选项:
-f file 指定规则文件
-C dir 读取规则文件前进入指定目录dir
多文件makefile的更新原理(基于时间):
makefile变量
1)自定义变量:将字符串赋给变量名,在makefile变量无数据类型。
语法:变量名=字符串
引用:$(变量名)
2)环境变量:make在运行过程中将环境变量转换为同名同值的make变量,用户也可在makefile中对这些变量进行重新定义。
3)预定义变量:
4)自动变量:
makefile中的函数(都是有返回值)
1)wildcard 查找当前目录下所有.c文件,返回值给src。
src =$ (wildcard ./*.c)
2)patsubst 替换所有.c文件为.o文件。
obj=$(patsubst ./%.c, ./%.o, $(src))
make clean:
清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。
例子: