zoukankan      html  css  js  c++  java
  • GNU make manual 翻译( 一百五十)

    继续翻译

    5.8 Defining Canned Recipes
    ===========================
    
    When the same sequence of commands is useful in making various targets,
    you can define it as a canned sequence with the `define' directive, and
    refer to the canned sequence from the recipes for those targets.  The
    canned sequence is actually a variable, so the name must not conflict
    with other variable names.
    
       Here is an example of defining a canned recipe:
    
         define run-yacc =
         yacc $(firstword $^)
         mv y.tab.c $@
         endef
       
    Here `run-yacc' is the name of the variable being defined; `endef'
    marks the end of the definition; the lines in between are the commands.
    The `define' directive does not expand variable references and function
    calls in the canned sequence; the `$' characters, parentheses, variable
    names, and so on, all become part of the value of the variable you are
    defining.  *Note Defining Multi-Line Variables: Multi-Line, for a
    complete explanation of `define'.
    
       The first command in this example runs Yacc on the first
    prerequisite of whichever rule uses the canned sequence.  The output
    file from Yacc is always named `y.tab.c'.  The second command moves the
    output to the rule's target file name.

    5.8 定义片段包
    ===========================

    当同一个序列的命令在构建各种不同的目的时有用的时候,你可以通过 define 指令把它们定义为一个片段包,参照此包来为那些目的服务。片段包实际上是一个变量,因此名字必须不和其他变量名冲突。

    这里有一个定义片段包的例子:

    define run-yacc =
    yacc $(firstword $^)
    mv y.tab.c $@
    endef

    这里 'run-yacc' 是被定义的变量的名字; 'endef ' 标记了定义的结束;
    两者之间是指令。'define' 指令并不扩展片段包中的变量和函数参照。'$' 符号, 括号, 变量名等等, 都成为你所定义的变量的值的一部份。如果要找完整的说明,请参考 *Note Defining Multi-Line Variables: Multi-Line。

    在这个例子中的第一个命令在某个运用此片段包的规则的前提条件里,运行Yacc。从Yacc来的输出文件名总是 y.tab.c。第二个命令删除规则目的文件名的输出。

    后文待续

  • 相关阅读:
    小四学习系列教程
    SQL分组多列统计(GROUP BY后按条件分列统计) -转
    fdisk:command not found
    PWA最简单例子
    Rider 2017.1.1下跑AVD出现Unexpected schema version 3错误的解决方法
    困扰:C#.net 连接Oracle11g 不报错但是在connection时出现 ServerVersion 引发了“System.InvalidOperationException”类型的异常
    JQuery EasyUI datagrid 复杂表头处理
    sql server 与oracle 中字段类型的对应
    Oracle 11g导出空表、少表的解决办法
    JS组件系列——两种bootstrap multiselect组件大比拼
  • 原文地址:https://www.cnblogs.com/gaojian/p/2710305.html
Copyright © 2011-2022 走看看