linux基础-makefile

1.makefile的命名(两种)

  1. makefile
  2. Makefile

2. makefile的规则

规则的三个要素:目标、依赖、命令

  格式:
  目标:依赖
  tab 命令
linux基础-makefile

3. 多文件的makefile的编写(一个源文件只重新编译改变的文件)

  1. makefile可以有多个规则,当第一个规则的的命令在执行的时候发现没有相应的依赖,就在下面的规则中找。最上面的规则的目标是终极目标一定写在最上面,也就是最后要生成的文件。
    linux基础-makefile
  2. 多文件Makefile的更新原理(基于时间)
    linux基础-makefile

4. makefile中的变量

  1. 自定义变量
    obj=main.o add.o sub.o
    引用的时候直接使用 $(obj)
    linux基础-makefile

  2. 自动变量(只能在规则的命令中使用(第二行))
    $< : 规则中的第一个依赖
    [email protected]:规则中的目标
    $^: 规则中所有的依赖

  3. 模式自动匹配 %
    子规则中:
    目标:依赖   %.o:%.c
    自动匹配终极目标的依赖
                       main.o:main.c
                       add.o:add.c
                        sub.o:sub.c

  4. makefile维护的变量(通常大写,自己可以修改)
    CC:cc(即gcc)
    APPFLAGS:预处理使用的选项
    CFLAGS:编译的时候使用的选项
    LDFLAGS:链接库使用的选项

linux基础-makefile

5. makefile中的函数(都是有返回值)

  1. wildcard 查找当前目录下所有.c文件,返回值给src
    src=$(wildcard ./*.c)
  2. patsubst 替换所有.c文件为.o文件
    obj=$(patsubst ./%.c, ./%.o, $(src))
    linux基础-makefile

6. make clean

在makefile最后加入clean的目标,为了重新编译所有文件得删除原来生成的文件
linux基础-makefile

7. 最终的简单的makefile

linux基础-makefile