- makefile的三个要素
1. 目标、依赖、命令 - makefile的工作原理
1. 首先寻找目标文件所依赖的文件是否存在,如果不存在寻找是否有生成该文件的规则,然后等到所有的依赖文件生成完毕之后,通过命令对这些文件进行组织并生成最后的目标文件
2. 如上所述,我们肯定要把最后的终极目标文件写在第一行。 - 一个简单的makefile
app(target): main.cpp(依赖文件) g++ main.cpp -o main(命令)
上述括号中内容请无视,为解释内容
- makefile中变量的定义与使用
- 在makefile中定义变量并不需要指定变量的类型,只需要对变量进行赋值即可格式如下
var(变量名) = value(值)
- 变量的使用,在makefile中使用$符号来引用变量,格式如下
src=main.cpp app(target): $(src)(引用变量) g++ $(src)(引用变量) -o main
- makefile中的特殊字符
- $<: 依赖文件中的第一个文件
- $^: 所有的依赖文件
- $@: 目标文件
- makefile中函数简介
- wildcard:获取某个文件夹下的文件,使用方法如下
举例:wildcard ./*.cpp(用来获取当前目录下所有的cpp)
src=$(wildcard ./*.cpp) $(wildcard ./head/*.cpp)
- 通过源文件src(上述的东西)使用patsubst函数来获得所有.o文件,使用方法如下:
注:后边有三个参数用‘,’分割,具体作用在上边解释了patsubst ./%.cpp(需要在src中查找的文件), ./%.o(将查找到的文件修改的格式,替换后缀的感觉), $(src)(源文件的参数,通过wildcard获得)
3. 伪目标生成:.phony:函数名
通过.phony:clean可以把clean目标标记为伪目标