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

    继续翻译

       Note that such a prerequisite constitutes mentioning `main.o' in a
    makefile, so it can never be considered an intermediate file by implicit
    rule search.  This means that `make' won't ever remove the file after
    using it; *note Chains of Implicit Rules: Chained Rules.
    
       With old `make' programs, it was traditional practice to use this
    compiler feature to generate prerequisites on demand with a command like
    `make depend'.  That command would create a file `depend' containing
    all the automatically-generated prerequisites; then the makefile could
    use `include' to read them in (*note Include::).
    
       In GNU `make', the feature of remaking makefiles makes this practice
    obsolete--you need never tell `make' explicitly to regenerate the
    prerequisites, because it always regenerates any makefile that is out
    of date.  *Note Remaking Makefiles::.
    
       The practice we recommend for automatic prerequisite generation is
    to have one makefile corresponding to each source file.  For each
    source file `NAME.c' there is a makefile `NAME.d' which lists what
    files the object file `NAME.o' depends on.  That way only the source
    files that have changed need to be rescanned to produce the new
    prerequisites.

    要注意对于在 makefile 中,此种前提条件,等同于提及了 main.o 文件,因此它绝不能被隐式规则搜索认为是一个中间文件。这意味着 make在使用此文件后 永不会删除它; *note Chains of Implicit Rules: Chained Rules.

    对旧的 make 程序,使用这种类似于 make depend 的,编译器的命令行功能按需来生成前提条件是一种传统的做法。此命令会生成一个文件 'depend' 包含所有的 自动生成的前提条件;这样 makefile 可用 include 来读取它们 。(*note Include::)

    在 GNU make 中,重新生成 makefile 的功能使得这种实践过时了 --你永远也不需要显式地告诉 make 去重新生成前提条件,因为它总是重新生成所有过期的makefile。*Note Remaking Makefiles:: 

    我们建议的自动前提条件生成是,为每一个源文件安排一个makefile。对每一个名为 NAME.c 的源文件,都有一个名为 NAME.d 的makefile ,列出所有的 NAME.o 文件所依赖的目标文件。用这种方法,只有变更的源文件需要被重新扫描以生成新的前提条件。

    后文待续

  • 相关阅读:
    搜索专题题解(FJUT
    Fliptile(枚举+DFS)
    Tempter of the Bone(DFS+剪枝)
    转换地图 (康托展开+预处理+BFS)
    C++输入输出常用格式(cin,cout,stringstream)
    FJUT
    STL迭代器
    几道STL题目(FJUT
    STL容器(Stack, Queue, List, Vector, Deque, Priority_Queue, Map, Pair, Set, Multiset, Multimap)
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/gaojian/p/2704207.html
Copyright © 2011-2022 走看看