zoukankan      html  css  js  c++  java
  • Makefile依赖关系中的竖线“|”


    网上搜索无果,于是自己查看了一下makefile的info文件,其中解释如下:
    [java] view plain copy print?
    target : prerequisites  
    [TAB]command1  
    [TAB]command2  
    [TAB]...  
    [TAB]commandN  
    其中的[TAB]就是键盘上的Tab键,不可以用空格替代,这些Makefile的常识,这里就不赘述。
    makefile.info中 4.3 Types of Prerequisites中介绍了两种类型的前提目标(Prerequisites)
    原文翻译如下:
    事实上make工具能理解两种类型的前提目标:
    Type I: 正常前提目标(Normal Prerequisites)
       正常前提目标能达成两个目的:
       1. 影响build command执行顺序,即:在生成目标(target)的命令被执行前,所有的需要生成的前提目标(Prerequisites)的命令都需要被执行。
       2. 影响依赖关系,即:如果任何一个前提目标(Prerequisites)比生成目标(target)新时,生成目标都将被认为太旧而需要被重新生成。

      通常,上面的这两个目的正是你所需要的:当前提目标更新时,生成目标也需要更新。

    Type II: 命令前提目标(order-only Prerequisites)
        偶尔的,我们会遇到这样的情况:我们需要执行某个或某些规则,但不能引起生成目标被重新生成。
       此时你就需要使用命令前提目标。命令前提目标由一个管道符号即竖线“|”指示,位于前提目标列表中。
       竖线左边的目标就是正常前提目标,竖线右边的目标就是命令前提目标,形式如下:
    [java] view plain copy print?
    target : normal-prerequisites | order-only-prerequisites  
    竖线左边的正常前提目标列表可以是空。 

    注意:如果前提目标中同时存在正常前提目标和命令前提目标,则正常前提目标优先生成

  • 相关阅读:
    使用 Web 服务 为 ECS Linux 实例配置网站及绑定域名
    部署 LAMP
    PHP与MYSQL事务处理
    centos6 yum 安装nginx 不成功解决办法
    5.5版本以上”No input file specified“问题解决
    php访问url的四种方式
    mysql索引总结----mysql 索引类型以及创建
    承诺,项目管理中的大杀器
    什么叫工作到位?
    Java中注解Annotation的定义、使用、解析
  • 原文地址:https://www.cnblogs.com/idyllcheung/p/10436163.html
Copyright © 2011-2022 走看看