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 文件所依赖的目标文件。用这种方法,只有变更的源文件需要被重新扫描以生成新的前提条件。

后文待续

你可能感兴趣的:(Make)