🤖 AI文章摘要 gemini-2.0-flash-lite

这篇文章介绍了make命令及其在构建过程中的应用。make命令使用makefile或Makefile作为配置文件,默认对配置文件的第一个目标进行生成。文章还详细阐述了make脚本的组成部分,包括变量(如内置变量、自定义变量和系统变量)和函数(如wildcard和patsubst)。此外,文章还介绍了构造用例,包括目标、目标依赖项和依赖处理规则,以及伪目标的使用。

1d1968c67eb9ea7bede85c39f6c47c46

1. make

  make命令默认使用当前目录下的makefile或Makefile作为配置文件, 可以使用-f参数更改

1.1 make命令

  • make [OPTION]... [TARGET]...
  • make执行流程: make默认对配置文件的第一个目标进行生成, 使用-o指定生成目标make只对目标文件不存在或依赖文件的修改时间比目标文件新的情况进行更新生成. 若更新是发现依赖不满足, 则会在配置文件下寻找生成该依赖的方案, 直至完成生成.

1.2 make脚本

  • 变量: 文件集合字符串, 可以直接书写文件名, 也可以通过函数生成
    • 内置变量
      • $@ 表示目标文件的名称,包含扩展名
      • $^ 表示所有的依赖文件,以空格隔开,不重复
      • $< 表示第一个依赖文件的名称
      • $+ 表示所有的依赖文件,空格隔开,可以重复
      • $* 表示目标文件的名称,不包含扩展名
      • $? 依赖项中,所有比目标文件新的依赖文件
    • 自定义变量: 变量名=$(表达式) 表达式可以是直接文件, 也可以是函数
    • 系统变量: $@ $^ $< $?
  • 函数: 处理生成文件
    • wildcard 正则表达式: 通配符匹配
    • patsubst 目标模式, 匹配模式, 匹配集合 : 匹配集合种符合匹配模式的替换称目标模式
  • 构造用例:
    • 目标: make所要生成的目标.
      • 伪目标: 使用.PHONY: 目标名声明伪目标, 伪目标的依赖处理规则一定会执行.
    • 目标依赖项:
    • 依赖处理规则: 依赖处理规则使用@修饰则不会输出执行的命令