mingw32-make 工具笔记#

规则#

模式规则#

变量的使用#

../_images/Makefile%E4%B8%AD%E7%9A%84%E5%8F%98%E9%87%8F.svg

规则中的自动变量#

  1. 自动变量,只能在规则中使用

  2. 自动变量后加 D 是获取目录名跟函数 dir 效果相同

  3. 自动变量后加 F 是获取文件名跟函数 notdir 效果相同

$@, $(@D), $(@F):

$@ 表示该规则中的目标(target )名

  1. 如果规则目标是归档文件 $@ 表示归档文件名。

  2. 模式规则 中目标可能不只 1 个, $@ 表示当前 recipe 正在生成的目标名称。

$%, $(%D), $(%F):

$% 当规则目标是归档文件时,它表示归档成员文件名, 如:在 foo.a(bar.o)$% 表示 bar.o, $@ 表示 foo.a。 如果规则目标不是归档文件, 则 $% 为空。

$<, $(<D), $(<F):

$< 表示规则中的第 1 个依赖( prerequisite )名称。

$?, $(?D), $(?F):

$? 表示规则中所有 已更新了的 的依赖名称。

$^, $(^D), $(^F):

$^ 表示规则中所有依赖文件列表 合并 重复依赖的名

$+, $(+D), $(+F):

$+ 也表示规则中所有依文件列表,但 不合并 重复依赖文件,也就是 1 个依赖名可以出现多次

$|:

$|$^ 功能一致,唯一的区别: 是这儿的依赖文件顺序跟依赖顺序一致

$*, $(*D), $(*F):
  • 模式规则$* 表示目标中的 % 部分: 如由 dir/a.foo.b 引起的模式目标 a.%.b 时, $* 表示 dir/foo

  • 在显示规则中,如果目标名带有后缀如: foo.exe$* 表示 foo 。如果目标名带后缀则 $* 为空