make简介

首先make可以简单甘分为make_zhi()同埋ni_make(a)两种带参数同埋不带参数嘅函数。

博君一笑啫,切入正题。。。。

make对Makefile进行处理,将距变成shell可执行嘅脚本,最后由shell解释器来执行有make翻译过嘅脚本。并且系翻译一句然后shell执行一句

^-^  make中有潜规则:只要make看到一个.o文件,它就会自动甘把对应的.c文件加到依赖文件中,而且gcc c  .c都会被推导出来

就好似

/*makefile*/

CC = gcc
OBJ = main.o mytool1.o mytool2.o

make: $(OBJ)
        $(CC) -o main $(OBJ)

main.o: mytool1.h mytool2.h    //隐藏嘅命令式gcc -c  main.c
mytool1.o: mytool1.h   //同样系潜规则
mytool2.o: mytool2.h    //一样


.PHONY: clean
clean:
        rm -f main $(OBJ)

makefile中有一D内置宏,分别系$@$^$<。代表的意义分别系:
$@--目标文件,
$^--所有嘅依赖文件,
$<--第一个依赖文件。

可改写为

/*makefile*/

CC = gcc
OBJ = main.o mytool1.o mytool2.o

main: $(OBJ)
        $(CC) -o $@ $^

main.o: main.c mytool1.h mytool2.h
        $(CC) -c $<
mytool1.o: mytool1.c mytool1.h
        $(CC) -c $<
mytool2.o: mytool2.c mytool2.h
        $(CC) -c $<

.PHONY: clean    //假目标避免和同名文件冲突,否则无依赖clean文件永远系最新,不必执行后面嘅命令
clean:
        rm -f main $(OBJ)// 伪指令,不生成目标

 

总之make就系N多个gcc -c自动化执行脚本,另外听讲linux下有个automake可以避免出错

原文地址:https://www.cnblogs.com/encode/p/2545333.html