python作用,什么是phy
拾遗是自己平时查阅另一个资料,然后引申出来的知识了解,答应自己,写完这个赶紧去睡觉咯,明早还有大物课
假的的用法以及意义:以下内容来自于栈溢出上面的一个问题的翻译以及对一些博客的总结和自己的一些理解https://堆栈溢出。com/questions/2145590/makefile中的伪造品的用途是什么
这是聪明的小蝴蝶的原回答,我把大概意思精简一下:
默认情况下,Makefile目标是"文件目标"——它们用于从其他文件构建文件制造假设它的目标是一个文件,这使得编写制作文件相对容易:
foo:bar create _ one _ from _ the _ other然而,有时您希望文件运行不代表文件系统中物理文件的命令。常见的目标"干净"和"全部"就是很好的例子。情况可能不是这样,但是您可能在主目录中有一个名为干净的的文件。在这种情况下,制作会感到困惑,因为默认情况下清洁目标会与该文件相关联,而制造只会在该文件的依赖项不是最新的时候运行它。
这些特殊的目标称为这些,您可以明确地告诉制造它们与文件无关,例如:假的:清洁清洁:rm -rf * .o即使您有一个名为干净的的文件,现在进行清理也将按预期运行。
就制造而言,假目标只是一个总是过时的目标,所以无论何时您调用制作假目标,它都会运行,与文件系统的状态无关。一些常见的虚假目标有:所有,安装,清理,distclean,标签,信息,检查。
就是说文件认为你写一个命令,比如说是干净,是一个目标文件,这样制造这个命令会认为干净的是一个文件,这样让编写文件更加的容易,但是有个问题,如果说和你的文件同级目录下还有一个干净的的文件,那么你去使干净就会失败,这时候你就需要用假的,说明这个是一个假的目标文件,这样你的使干净就会成功执行,否则就会弹出文件是
最新的,你需要使用假的的场合还有:全部,安装,清理,远程清理,标记,信息,检查。这些时候
假目标只是一个总是过时的目标这句话很经典啊,一个假的的目标文件就像是一个过时的目标文件
有个人提出了一个问题:所以,ifa: b,b: c,c: phwherephis .假的,你要求的,并且是最新的,你的评论暗示PH3将被运行。事实上,甲,乙,都不可能是最新的。
这个东西我会这周周末的时候试一下,因为要准备概率论的考试,累的一匹。
有这样一个例子大家可以参考:
NOTE:制造商工具读取文件并检查规则中":"符号两侧文件的修改时间戳。
示例在目录“测试”中,存在以下文件:
prerit @ vvdn 105:~/test $ ls你好你好。c生成文件在文件中一个规则定义如下:
你好:你好。cc你好现在假设文件你好是一个包含一些数据的文本文件,它是在你好文件之后创建的。因此“你好”的修改(或创建)时间戳将比“hello.c”的时间戳新。因此,当我们从命令行调用“打招呼”时,它将显示为:(假设你好这个文件包含一些数据,)
品牌:`你好是最新的。现在访问你好文件并在其中添加一些空格,这不会影响代码语法或逻辑,然后保存并退出。现在hello.c的修改时间戳比“你好”的时间戳新。现在,如果您调用“打招呼”,它将执行以下命令:(这段和上面那段的大概意思就是你本来有一个你好的文本文件,但是你(同地面控制中心)地面控制中心之后生成了一个你好的可执行文件,这个就会覆盖原本的你好文本文件)
你好。你好和文件“你好”(文本文件)将被一个新的二进制文件“你好”(上述编译命令的结果)覆盖。
如果我们使用makefile文件中的假代码如下:假的你好你好你好。cc cc你好。你好,然后调用打招呼,它将忽略显示当前工作目录中是否存在任何名为你好的文件,并每次都执行该命令。
现在假设文件中没有目标的依赖项:(假设他没有依赖文件)
你好:抄送你好c -o。你好
并且“你好”文件已经存在于pwd“测试”中,则“打招呼”将始终显示为:
品牌:`你好是最新的。还有一个例子,我会在周末的时候一并翻译,另外一个关于假的用法的范例:
还有一个重要的棘手问题。假-当一个物理目标依赖于假目标,而假目标又依赖于另一个物理目标时:
目标1 -假冒转发1 -假冒转发2 -目标2
您可能会简单地认为,如果您更新了目标2,那么目标1应该相对于目标1被认为是陈旧的,因此目标1应该被重建。And it really works this way.
棘手部分是当目标2isnt对目标1失效时——在这种情况下,您应该预料到目标1不应该被重建。
这令人惊讶地不工作,因为:the phony target was run anyway (as phony targets normally do),这意味着the phony target was considered updated。也因为那个TARGET1 is considered stale against the phony target。
考虑:
all:file all file all:file 2 file FWD echo file 2 file 1 file all file 2:file 2。src回显文件2。文件1:文件1。src回显文件1。src文件1回显文件1。src文件1。src文件1 .假的:文件转发 PHONY:file FWD 2 file FWD:file FWD 2 file FWD 2:file 1 @ echo 生成的目标文件“1”准备:回显“一些文本1”文件1。src回显“一些文本2”文件2。科学研究委员会您可以用它来玩:
首先做"准备好"来准备"源文件",通过触摸特定的文件来查看它们的更新。您可以看到文件全部通过一个虚假的目标间接地依赖于文件1但是由于这种依赖性,它always被重新构建。如果您在fileallfromfilefwdtofile中更改依赖关系,则nowfilealldoes不会每次都重新生成,而只会在任何依赖目标作为文件过时时才重新生成。
如果你想了解更多的关于假的的知识还是得浏览官方文档,周末我会浏览官方文档:https://www。GNU。org/software/make/manual/html _ node/Phony-targets。超文本标记语言
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。