makefile+make

 1.make
 -gcc-编译器
 -make-Linux自带的构建器
   --构建的规则在makefile中
2.makefile文件的命名
 -makefile
 -Makefile
3.makefile中的规则
 gcc a.c b.c c. -p app
 -三部分:目标,依赖,命令
  目标:依赖
  (tab缩进)命令
   app:a.c b.c c.c
       gcc a.c b.c c.c -o app
   -makefile中由一条或者多条规则组成
   -*-make
   make命令会调用makefile中的命令
4.makefile的编写
 -第一个版本
 缺点:效率低,需改一个文件,所有文件会被全部重新编译
 
 -第二个版本
  -工作原理
   -检测依赖是否存在:
    向下搜索下边的规则,如果有规则是用来生成查找的依赖的,执行规则中的命令
   -依赖存在,判断是否需要更新
    -原则:目标时间>依赖的时间
   -缺点:冗余
 -第三个版本:
  -自定义变量:
               obj=a.o b.o c.o
               obj=10
  -变量的取值
               aa=$(obj)
   -makefile自带的变量:大写
    -CPPFLAGS
    -CC
   -自动变量:
    $@:表示规则中的目标
    $<:规则中的第一个依赖
    $^:规则中所有的依赖
    只能在规则中的命令中使用    
 
    obj=main.o add.o sub.o mul.o
    target=app
    $(target):$(obj)
      gcc $(obj) -o $(target)
    %.o:%.c
      gcc -c $< -o $@
  
模式匹配
   %.o:%.c
 
第四个版本
  makefile所有的函数都有返回值
  -查找指定目录下指定类型的文件
   src=$(wildcard ./*.c)
   返回值为当前目录下所有.c 源文件列表。
  -匹配替换
   obj=$(patsubst %.c,%.o,$(src))
 
清除工作目录过程文件:
规则除了完成源代码编译之外,也可以完成其它任务。例如:前边提到的为了实现
清除当前目录中编译过程中产生的临时文件(edit 和哪些.o 文件)的规则:
clean : 
rm edit $(objects) 
原文地址:https://www.cnblogs.com/MAPO/p/8462235.html