免规则采集器列表算法( 一个目标叫T的规则规则的算法介绍及注意事项)

优采云 发布时间: 2022-03-28 15:09

  免规则采集器列表算法(

一个目标叫T的规则规则的算法介绍及注意事项)

  隐式规则搜索算法

  例如,我们有一个名为 T 的目标。下面是为目标 T 搜索规则的算法。请注意,下面我们不提及后缀规则,因为在将 Makefile 加载到内存中时,所有后缀规则都会转换为模式规则。如果目标是“archive(member)”的函数库文件模式,那么这个算法会运行两次,第一次是找到目标T,如果没有找到,则进入第二次,第二次将使用“member”作为“member”进行搜索。

  1、分隔T的目录部分。称为D,其余称为N。(例如:如果T是“src/foo.o”,则D是“src/”,N是“foo .o")

  2、创建匹配 T 或 N 的所有模式规则的列表。

  3、如果模式规则列表中存在匹配所有文件的模式,例如“%”,则从列表中删除其他模式。

  4、删除列表中没有命令的规则。

  5、对于列表中的第一个模式规则:

  1)派生它的“stem” S,它应该是 T 或 N 匹配模式的非空“%”部分。

  2)计算依赖文件。将依赖文件中的“%”替换为“stem”S。如果目标模式不收录斜线字符,则在第一个依赖文件的开头添加 D。

  3)测试所有依赖文件是否存在或应该存在。(如果文件被定义为另一个规则的对象,或者作为显式规则的依赖项,则该文件被称为“应该存在”)

  4)如果所有依赖都存在或应该存在,或者如果没有依赖。然后将应用此规则,退出算法。

  6、如果在第 5 步之后没有找到模式规则,则进行进一步搜索。对于列表中的第一个模式规则:

  1)如果规则是终止规则,忽略它并继续下一个模式规则。

  2)计算依赖文件。(与第 5 步相同)

  3)测试所有依赖文件是否存在或应该存在。

  4)对于不存在的依赖文件,递归调用这个算法,看是否可以通过隐式规则找到。

  5)如果所有依赖都存在或应该存在,或者根本不存在依赖。然后采用该规则,退出算法。

  7、如果没有可以使用的隐式规则,检查“.DEFAULT”规则,如果有,使用,使用“.DEFAULT”命令T。

  一旦找到规则,就执行它的等效命令,此时,我们的自动化变量的值就生成了。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线