详情请看:https://blog.csdn.net/liang13664759/article/details/1771246
我总结一下到目前为止我自己的理解。
首先makefile执行make时默认只会执行第一条命令。
命令的格式是以下形式:
target:sources
cmd
target:此命令的标记tag,一般我们取名为这个命令生成的目标文件
sources:生成这个文件所依赖的文件集合,如果里面的某个文件更新就会重新执行这个命令,也可以依赖tag,依赖tag则会先检查tag命令(以此类推,你可以看作是递归),最后就是执行的shell命令cmd了。
里面支持赋值操作,比如a = xxx yyy zzz,然后$(a)就会被解析成xxx yyy zzz了。
还有一种常用的格式化方式,比如origins = $(objects:%.o=src/%.cc),会将object以空格隔开的字符串中找到满足.o结尾的替换成src/xxx.o文件。
make支持多线程编译,举个例子,make -j4 就是开启4个线程编译了,速度可以加快。