在命令行中执行make的时候。
make会在当前目录中寻找Makefile的文件。对其中的对应目标进行构建。
1 基本语法
make最基本的语法是
targets: prerequisites
command
.....
.....
targets是需要构建的目标 prerequisites是构建这个目标需要的依赖
command是执行的命令
注意command前面有一个TAB制表符。每一行写一个命令,命令都要以TAB制表符开头
2include和重建
对于include和 -include sinclude
如果遇到include target。但是这个target文件不存在,make不会错误退出,而是先尝试构建这个target ,尝试构建后,如果文件得到更新,那么makefile将重新从头开始执行。
如果target无法构建。如果使用的是include 那么就会报错退出。如果是-include或者sinclude的如果不影响make流程,那么make不会错误退出,如果影响整个make过程,那么也会报错退出。
3构建目标命中的规则
执行make不带任何目标。会将第一个目标作为终极目标
如果有两个同名的目标。执行的是后一个目标。也就是后一个目标被前一个覆盖。
比如
all:
echo "all1"
all:
echo "all2"
make all 会执行 echo "all2"
前一个all被覆盖
如果有匹配模式和确定的的目标。优先匹配确定的目标。
%o:
echo "gcc -o"
func.o:
gcc -c func.c
执行make func.o 由于有确定的目标 func.o 。那么就不匹配 %o了
根据依赖匹配
%.o: %.cx
echo "exec cx"
%.o: %.c
echo "exec c"
如果此时目录内有一个 a.c 和b.cx
执行make a.o匹配 %.o: %.c
执行make b.o匹配%.o: %.cx