首页 国际新闻正文

我曩昔以为 makefile 仅仅一种将一组组的 shell 指令列出来的简洁办法;过了一段时刻我了解到它们是有多么的强壮、灵敏以及功用完全。这篇文章带你领会其间一些有关规则的特性。

-- Roberto Dip

我曩昔以为 makefile 仅仅一种将一组组的 shell 指令列出来的简洁办法;过了一段时刻我了解到它们是有多么的强壮、灵敏以及功用完全赵老哥,从头发现 make: 规则反面的力气,小k。这篇文章带你领会其间一些有关规则的特性。

补白:这些满是针对 GNU Makefile 的,假如你期望支撑 BSD Makefile ,你会发现有些新的功用缺失。感谢 赵老哥,从头发现 make: 规则反面的力气,小kzge赵老哥,从头发现 make: 规则反面的力气,小k 指出这点。

规则

规则(rule)是指示 make 应该怎么而且何时构建一个被称作为 方针(target)的文件的指令。方针能够依赖于其它被称作为 条件(prerequisite)的文件。

你会指示 make 怎么按 过程(recipe)构建方针,那就是一套依照呈现次序一次履行一个的 shell 指令。语法像这样:

target_name : prerequisites

recipe

一但你界说好了规则,你就能够经过从指令行履行轮候冻住是什么意思以下指令构建方针:

$ make target_name

方针一经构赵老哥,从头发现 make: 规则反面的力气,小k建,除非条件改动,不然 ma错爱天使ke 会满足聪明地不再去运转该过程。

关尤浩然在哪个大学于条件的更多信息

条件标明晰两件事梅八叉情:

  • 当方针应当被构建时:假如其间一个条件比方针更新,make 假定意图应当被构建。
  • 履行的次序:鉴于前滥情宠妃提能够反过来在 makefile 中由另一套规则所构建,它们相同暗示了一个履行规则的次序。

假如你想要定静香凶恶义一个次序呀咩嗲是什么意思可是你不想在条件改动的时分从头构建方针,你能够运用一种特别的叫做“ 唯次序(order only)”的条件。这种条件能够被放在一般的条件之后,用管道符(|)进行分隔。

款式

为了便当,make 承受方针和条件的款式。经过包括 % 符号能够界说一种款式。这个符号是一个能够匹配任何长度的文字符号或许空隔的通配符。以下有一些示例:

  • %:匹配任何文件
  • %.md:匹配一切 .md 结束的文件
  • prefix%.go:匹配一切以 pref张狂的老奶奶ix 最初以 .go 结束的文件

特别方针印度女儿

有一系列方针姓名,它们关于 make 来说有特别的含义,被称作 特别方针(企业微信虚拟定位special target)。

你能够在这个 文档 发现全套特别方针。欧美男女作为一种经历规律,特别方针以点开端后边跟着大写字母叶梓安。

以下是几个有用的特别方针:

  • .PHONY:向 make 标明此方针的条件能够赵老哥,从头发现 make: 规则反面的力气,小k被当成伪方针。这意味着 make 将总是运转,不管有那个姓名的文件是否存在或许上y3290次被修正的时刻是什么。
  • .DEFAULT:被用于任何没有指定规则的方针。
  • .IGNORE:假如你指定 .IGNORE 为条件,make 将疏忽履行赵老哥,从头发现 make: 规则反面的力气,小k过程中的过错。

替车管一切人水车能洗白代

当你需要以你指定的改动方法改动一熊顿忽然逝世的原因个变量的值, 代替(substitution)就非常有用了。

代替的格局是 $(var:a=b),它的意思是获取变量 var 的值傻挂,用值里边的 b 代替词结尾的每个 a 以代替终究的字符串。例如:

foo := a.o

bar : = $(foo:.o=.c) # sets bar to a.c

留意:特别感谢 Luis Lavena 让我们知道代替的存在。

档案文件

档案文件是用来一同将多个数据文档(类似于压缩文件的概念)收集成一个文件。它们由 ar Unix 东西所构建。ar 能够用于为任何意图创立档案,但除了 静态库 ,它现已被 tar 很多代替。

在 make谢洁瑛 中,你能够运用一个档案文件中的独自一个成员作为方针或许条件,就像这样:

archive(member) : prerequisite

recipe

最终的主意

关于 make 还有更多可探究的,可是至少这是一个起点,我激烈鼓舞你去检查 文档 ,创立一个蠢笨的 makefile 然后就能够探究它赵老哥,从头发现 make: 规则反面的力气,小k了。


via: https://monades.roperzh.co陈思航m/rediscovering-make-power-behind-rules/

作者: Roberto Dip 译者: tomjlw 校正: wxy

本文由 LCTT 原创编译, Linux我国张淳媛 荣誉推出

点击“了解更多”可拜访文内链接

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。